php读取XML的常见方法实例总结


Posted in PHP onApril 25, 2017

本文实例讲述了php读取XML的常见方法。分享给大家供大家参考,具体如下:

xml源文件

<?xml version="1.0 encoding="UTF-8"?>
<humans>
   <zhangying>
     <name>张映</name>
     <sex>男</sex>
     <old>28</old>
   </zhangying>
   <tank>
     <name>tank</name>
     <sex>男</sex>
     <old>28</old>
   </tank>
</humans>

1)DOMDocument读取xml

<?php
   $doc = new DOMDocument();
   $doc->load('person.xml'); //读取xml文件
   $humans = $doc->getElementsByTagName( "humans" ); //取得humans标签的对象数组
   foreach( $humans as $human )
   {
     $names = $human->getElementsByTagName( "name" ); //取得name的标签的对象数组
     $name = $names->item(0)->nodeValue; //取得node中的值,如<name> </name>
     $sexs = $human->getElementsByTagName( "sex" );
     $sex = $sexs->item(0)->nodeValue;
     $olds = $human->getElementsByTagName( "old" );
     $old = $olds->item(0)->nodeValue;
     echo "$name - $sex - $old\n";
   }
?>

2)simplexml读取xml

<?php
   $xml_array=simplexml_load_file('person.xml'); //将XML中的数据,读取到数组对象中
   foreach($xml_array as $tmp){
     echo $tmp->name."-".$tmp->sex."-".$tmp->old."<br>";
   }
?>

3)用php正则表达式来读取数据

<?php
   $xml = "";
   $f = fopen('person.xml', 'r');
   while( $data = fread( $f, 4096 ) ) {
     $xml .= $data;
   }
   fclose( $f );
   // 上面读取数据
   preg_match_all( "/\<humans\>(.*?)\<\/humans\>/s", $xml, $humans ); //匹配最外层标签里面的内容
   foreach( $humans[1] as $k=>$human )
   {
     preg_match_all( "/\<name\>(.*?)\<\/name\>/", $human, $name ); //匹配出名字
     preg_match_all( "/\<sex\>(.*?)\<\/sex\>/", $human, $sex ); //匹配出性别
     preg_match_all( "/\<old\>(.*?)\<\/old\>/", $human, $old ); //匹配出年龄
   }
   foreach($name[1] as $key=>$val){
     echo $val." - ".$sex[$key][1]." - ".$old[$key][1]."<br>" ;
   }
?>

4)xmlreader来读取xml数据

<?php
   $reader = new XMLReader();
   $reader->open('person.xml'); //读取xml数据
   $i=1;
   while ($reader->read()) { //是否读取
     if ($reader->nodeType == XMLReader::TEXT) { //判断node类型
       if($i%3) {
         echo $reader->value; //取得node的值
       } else {
         echo $reader->value."<br>" ;
       }
       $i++;
     }
   }
?>
PHP 相关文章推荐
第十二节--类的自动加载
Nov 16 PHP
PHP三层结构(上) 简单三层结构
Jul 04 PHP
屏蔽机器人从你的网站搜取email地址的php代码
Nov 14 PHP
PHP根据两点间的经纬度计算距离
Oct 31 PHP
php 数组随机取值的简单实例
May 23 PHP
JSON两种结构之对象和数组的理解
Jul 19 PHP
PHP XML和数组互相转换详解
Oct 26 PHP
PHP载入图像imagecreatefrom_gif_jpeg_png系列函数用法分析
Nov 14 PHP
php 从指定数字中获取随机组合的简单方法(推荐)
Apr 05 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
Nov 17 PHP
PHP正则验证字符串是否为数字的两种方法并附常用正则
Feb 27 PHP
laravel excel 上传文件保存到本地服务器功能
Nov 14 PHP
利用PHP实现一个简单的用户登记表示例
Apr 25 #PHP
PHP中的正则表达式实例详解
Apr 25 #PHP
PHP利用二叉堆实现TopK-算法的方法详解
Apr 24 #PHP
关于PHP定时发送服务的解决办法
Apr 23 #PHP
php读取和保存base64编码的图片内容
Apr 22 #PHP
PHP7多线程搭建教程
Apr 21 #PHP
mac系统下安装多个php并自由切换的方法详解
Apr 21 #PHP
You might like
php中限制ip段访问、禁止ip提交表单的代码分享
2014/08/22 PHP
php微信公众平台配置接口开发程序
2016/09/22 PHP
初学JavaScript第二章
2008/09/30 Javascript
判断多个元素(RADIO,CHECKBOX等)是否被选择的原理说明
2009/02/18 Javascript
javascript mouseover、mouseout停止事件冒泡的解决方案
2009/04/07 Javascript
jQuery的学习步骤
2011/02/23 Javascript
常用jQuery选择器总结
2014/07/11 Javascript
jquery利用命名空间移除绑定事件的方法
2015/03/11 Javascript
分享十五款 jQuery 社交网络分享插件
2015/05/16 Javascript
JS中的THIS和WINDOW.EVENT.SRCELEMENT详解
2015/05/25 Javascript
简介JavaScript中strike()方法的使用
2015/06/08 Javascript
判断js的Array和Object的实现方法
2016/08/29 Javascript
jQuery将表单序列化成一个Object对象的实例
2016/11/29 Javascript
AngularJS中的Promise详细介绍及实例代码
2016/12/13 Javascript
jQuery用noConflict代替$的实现方法
2017/04/12 jQuery
js学习心得_一个简单的动画库封装tween.js
2017/07/14 Javascript
js弹性势能动画之抛物线运动实例详解
2017/07/27 Javascript
JavaScript EventEmitter 背后的秘密 完整版
2018/03/29 Javascript
JS温故而知新之变量提升和时间死区
2019/01/27 Javascript
在Vue中使用HOC模式的实现
2020/08/23 Javascript
[01:08:44]NB vs VP 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
全面解读Python Web开发框架Django
2014/06/30 Python
Python中分数的相关使用教程
2015/03/30 Python
Python中的zipfile模块使用详解
2015/06/25 Python
python中(str,list,tuple)基础知识汇总
2018/02/20 Python
python如何查看微信消息撤回
2018/11/27 Python
Flask-WTF表单的使用方法
2019/07/12 Python
Selenium及python实现滚动操作多种方法
2020/07/21 Python
解决Pycharm双击图标启动不了的问题(JetBrains全家桶通用)
2020/08/07 Python
HTML5 本地存储实现购物车功能
2017/09/07 HTML / CSS
海南地接欢迎词
2014/01/14 职场文书
高中运动会广播稿
2014/01/21 职场文书
酒店圣诞节活动总结
2015/05/06 职场文书
Redis如何使用乐观锁(CAS)保证数据一致性
2022/03/25 Redis
vue实现简易音乐播放器
2022/08/14 Vue.js
python 使用pandas读取csv文件的方法
2022/12/24 Python