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 相关文章推荐
很实用的一个完整email发送程序
Oct 09 PHP
php入门学习知识点四 PHP正则表达式基本应用
Jul 14 PHP
PHP HTML JavaScript MySQL代码如何互相传值的方法分享
Sep 30 PHP
使用PHP求两个文件的相对路径
Jun 20 PHP
解析php常用image图像函数集
Jun 24 PHP
PHPAnalysis中文分词类详解
Jun 13 PHP
ThinkPHP模板中数组循环实例
Oct 30 PHP
PHP7多线程搭建教程
Apr 21 PHP
Yii2使用表单上传文件的实例代码
Aug 03 PHP
Laravel学习教程之路由模块
Aug 18 PHP
php中pcntl_fork创建子进程的方法实例
Mar 14 PHP
宝塔面板出现“open_basedir restriction in effect. ”的解决方法
Mar 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
介绍几个array库的新函数 php
2006/12/29 PHP
Nginx下ThinkPHP5的配置方法详解
2017/08/01 PHP
PHP设计模式之观察者模式定义与用法分析
2019/04/04 PHP
JavaScript 组件之旅(二)编码实现和算法
2009/10/28 Javascript
使用javascript:将其它类型值转换成布尔类型值的解决方法详解
2013/05/07 Javascript
用javascript判断IE版本号简单实用且向后兼容
2013/09/11 Javascript
JavaScript中String.prototype用法实例
2015/05/20 Javascript
易被忽视的js事件问题总结
2016/05/14 Javascript
禁用backspace网页回退功能的实现代码
2016/11/15 Javascript
vue移动端裁剪图片结合插件Cropper的使用实例代码
2017/07/10 Javascript
AngularJS中使用three.js的实例详解
2017/07/21 Javascript
angularjs实现猜大小功能
2017/10/23 Javascript
在vue中使用css modules替代scroped的方法
2018/03/10 Javascript
使用pm2自动化部署node项目的方法步骤
2019/01/28 Javascript
vuex实现及简略解析(小结)
2019/03/01 Javascript
JavaScript字符和ASCII实现互相转换
2020/06/03 Javascript
关于vue的列表图片选中打钩操作
2020/09/09 Javascript
跟老齐学Python之编写类之三子类
2014/10/11 Python
Django实现图片文字同时提交的方法
2015/05/26 Python
Python缓存技术实现过程详解
2019/09/25 Python
解决python replace函数替换无效问题
2020/01/18 Python
Pyinstaller加密打包应用的示例代码
2020/06/11 Python
python定义具名元组实例操作
2021/02/28 Python
Python3压缩和解压缩实现代码
2021/03/01 Python
安全的后院和健身蹦床:JumpSport
2019/07/15 全球购物
介绍一下Linux文件的记录形式
2013/09/29 面试题
小区消防演习方案
2014/02/21 职场文书
主持词开场白
2014/03/17 职场文书
读书活动总结
2014/04/28 职场文书
关爱留守儿童标语
2014/06/18 职场文书
2014学习十八届四中全会精神思想汇报范文
2014/10/23 职场文书
开会通知
2015/04/20 职场文书
Golang全局变量加锁的问题解决
2021/05/08 Golang
基于PyQt5制作一个群发邮件工具
2022/04/08 Python
Python内置的数据类型及使用方法
2022/04/13 Python
MySQL 逻辑备份 into outfile
2022/05/15 MySQL