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 相关文章推荐
用PHP函数解决SQL injection
Dec 09 PHP
Discuz 5.0 中读取纯真IP数据库函数分析
Mar 16 PHP
PHP 5.3.0 安装分析心得
Aug 07 PHP
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-3 代码组织和重用2
Jul 03 PHP
在PHP上显示JFreechart画的统计图方法
Nov 03 PHP
php弹出对话框实现重定向代码
Jan 23 PHP
CodeIgniter错误mysql_connect(): No such file or directory解决方法
Sep 06 PHP
php curl 获取https请求的2种方法
Apr 27 PHP
php编写简单的文章发布程序
Jun 18 PHP
PHP中file_exists使用中遇到的问题小结
Apr 05 PHP
PHP 网站修改默认访问文件的nginx配置
May 27 PHP
Thinkphp3.2简单解决多文件上传只上传一张的问题
Sep 26 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图片裁剪函数(保持图像不变形)
2014/05/04 PHP
浅谈ThinkPHP的URL重写
2014/11/25 PHP
PHP面向对象程序设计实例分析
2016/01/26 PHP
laravel 关联关系遍历数组的例子
2019/10/10 PHP
网页的标准,IMG不支持onload标签怎么办
2006/06/29 Javascript
基于jQuery的可用于选项卡及幻灯的切换插件
2011/03/28 Javascript
jquery 触发a链接点击事件解决方案
2013/05/02 Javascript
基于jquery实现的仿优酷图片轮播特效代码
2016/01/13 Javascript
JavaScript html5 canvas画布中删除一个块区域的方法
2016/01/26 Javascript
基于jquery实现无限级树形菜单
2016/03/22 Javascript
JavaScript之DOM_动力节点Java学院整理
2017/07/03 Javascript
谈谈对vue响应式数据更新的误解
2017/08/01 Javascript
微信小程序实现两边小中间大的轮播效果的示例代码
2018/12/07 Javascript
百度小程序自定义通用toast组件
2019/07/17 Javascript
JS中FileReader类实现文件上传及时预览功能
2020/03/27 Javascript
python3实现ftp服务功能(服务端 For Linux)
2017/03/24 Python
python嵌套字典比较值与取值的实现示例
2017/11/03 Python
Python+selenium实现截图图片并保存截取的图片
2018/01/05 Python
python判断字符串或者集合是否为空的实例
2019/01/23 Python
Python面向对象程序设计示例小结
2019/01/30 Python
pycharm创建一个python包方法图解
2019/04/10 Python
python实现字符串完美拆分split()的方法
2019/07/16 Python
在Python中画图(基于Jupyter notebook的魔法函数)
2019/10/28 Python
python3用urllib抓取贴吧邮箱和QQ实例
2020/03/10 Python
大学生毕业自我鉴定范文
2013/11/03 职场文书
教师实习自我鉴定
2013/12/14 职场文书
土木建筑学生自我评价
2014/01/14 职场文书
图书室管理制度
2014/01/19 职场文书
幼儿园教师获奖感言
2014/03/11 职场文书
文明礼仪伴我行演讲稿
2014/05/12 职场文书
三分钟自我介绍演讲稿
2014/08/21 职场文书
领导班子作风建设剖析材料
2014/10/11 职场文书
2015年校长新年寄语
2014/12/08 职场文书
反邪教警示教育活动总结
2015/05/09 职场文书
Spring Cloud Gateway去掉url前缀
2021/07/15 Java/Android
nginx常用配置conf的示例代码详解
2022/03/21 Servers