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脚本数据库功能详解(下)
Oct 09 PHP
php修改NetBeans默认字体的大小
Jul 02 PHP
浅析PHP程序设计中的MVC编程思想
Jul 28 PHP
PHP中的gzcompress、gzdeflate、gzencode函数详解
Jul 29 PHP
thinkphp特殊标签用法概述
Nov 24 PHP
ThinkPHP添加更新标签的方法
Dec 05 PHP
PHP使用Memcache时模拟命名空间及缓存失效问题的解决
Feb 27 PHP
Yii CFileCache 获取不到值的原因分析
Feb 08 PHP
Laravel数据库读写分离配置的方法
Oct 13 PHP
Laravel 5.2 文档 数据库 ―― 起步介绍
Oct 21 PHP
ThinkPHP6.0如何利用自定义验证规则规范的实现登陆
Dec 16 PHP
PHP命令行与定时任务
Apr 01 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
jquery获取多个checkbox的值异步提交给php的方法
2015/06/24 PHP
jquery中ajax调用json数据的使用说明
2011/03/17 Javascript
读jQuery之二(两种扩展)
2011/06/11 Javascript
常用js字符串判断方法整理
2013/10/18 Javascript
JavaScript子类用Object.getPrototypeOf去调用父类方法解析
2013/12/05 Javascript
Jquery.Form 异步提交表单的简单实例
2014/03/03 Javascript
jQuery学习笔记之基础中的基础
2015/01/19 Javascript
使用ionic(选项卡栏tab) icon(图标) ionic上拉菜单(ActionSheet) 实现通讯录界面切换实例代码
2017/10/20 Javascript
vuex2中使用mapGetters/mapActions报错的解决方法
2018/10/20 Javascript
简单易扩展可控性强的Jquery转盘抽奖程序
2019/03/16 jQuery
JS中的防抖与节流及作用详解
2019/04/01 Javascript
详解微信小程序文件下载--视频和图片
2019/04/24 Javascript
vue组件命名和props命名代码详解
2019/09/01 Javascript
vue.config.js常用配置详解
2019/11/14 Javascript
Javascript原生ajax请求代码实例
2020/02/20 Javascript
VueJS实现用户管理系统
2020/05/29 Javascript
Element Dialog对话框的使用示例
2020/07/26 Javascript
[11:01]2014DOTA2西雅图邀请赛 冷冷带你探秘威斯汀
2014/07/08 DOTA
详解C++编程中一元运算符的重载
2016/01/19 Python
详解python单元测试框架unittest
2018/07/02 Python
Python使用grequests(gevent+requests)并发发送请求过程解析
2019/09/25 Python
python 字典访问的三种方法小结
2019/12/05 Python
基于python实现语音录入识别代码实例
2020/01/17 Python
Python3 io文本及原始流I/O工具用法详解
2020/03/23 Python
Python响应对象text属性乱码解决方案
2020/03/31 Python
Python趣味实例,实现一个简单的抽奖刮刮卡
2020/07/18 Python
HTML5中5个简单实用的API(第二篇,含全屏、可见性、拍照、预加载、电池状态)
2014/05/07 HTML / CSS
html5 实现客户端验证上传文件的大小(简单实例)
2016/05/15 HTML / CSS
加拿大快时尚零售商:Ardene
2018/02/14 全球购物
什么是会话Bean
2015/05/14 面试题
教师应聘个人求职信
2013/12/10 职场文书
幼儿园小班工作总结2015
2015/04/25 职场文书
2015年七一建党节活动方案
2015/05/05 职场文书
毕业论文答辩开场白和答辩技巧
2015/05/27 职场文书
红与黑读书笔记
2015/06/29 职场文书
OpenCV图像变换之傅里叶变换的一些应用
2021/07/26 Python