PHP读取xml方法介绍


Posted in PHP onJanuary 12, 2013

一,什么是xml,xml有什么用途

XML(Extensible Markup Language)即可扩展标记语言,它与HTML一样,都是SGML(Standard Generalized Markup Language,标准通用标记语言)。Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用。
XML的用途很多,可以用来存储数据,可以用来做数据交换,为很多种应用软件提示数据等等。
二,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++; 
} 
} 
?>

三,小结

读取xml的方法很多,简单举几个。上面四种方法都是可以把标签中的数据读出来,张映.但是他们的测重点不同,前三种方法的读取xml的function的设计重点,是为了读取标签中的值,相当于jquery中的text()方法,而xmlreader呢他就不太一样,他的重点不在读取标签中的值,而读取标签的属性,把要传送的数据,都放在属性中(不过我上面写的那个方法还是取标签中的值,因为xml文件已经给定了,我就不想在搞xml文件出来了)。

举个例子解释一下,

<data name='张映' sex='男' old='28′></data>

xmlreader的设计重点是为了读data里面的name sex old的值,而读取的内容就比较麻烦了。他相当于jquery中attr(”);这个东西。

上面纯属个人看法,请大家指正。希望对大家有帮助。

PHP 相关文章推荐
web方式ftp
Oct 09 PHP
PHP的面试题集,附我的答案和分析(一)
Nov 19 PHP
PHP入门速成教程
Mar 19 PHP
PHP Squid中可缓存的动态网页设计
Sep 17 PHP
利用discuz实现PHP大文件上传应用实例代码
Nov 14 PHP
php中使用Akismet防止垃圾评论的代码
Jun 10 PHP
php中如何判断一个网页请求是ajax请求还是普通请求
Aug 10 PHP
jquery+php+ajax显示上传进度的多图片上传并生成缩略图代码
Oct 15 PHP
php模拟post上传图片实现代码
Jun 24 PHP
php json相关函数用法示例
Mar 28 PHP
PHP实现压缩图片尺寸并转为jpg格式的方法示例
May 10 PHP
Laravel 验证码认证学习记录小结
Dec 20 PHP
用PHP编写和读取XML的几种方式
Jan 12 #PHP
php图片的裁剪与缩放生成符合需求的缩略图
Jan 11 #PHP
浏览器预览PHP文件时顶部出现空白影响布局分析原因及解决办法
Jan 11 #PHP
php判断上传的Excel文件中是否有图片及PHPExcel库认识
Jan 11 #PHP
PHP中header和session_start前不能有输出原因分析
Jan 11 #PHP
PHP跨时区(UTC时间)应用解决方案
Jan 11 #PHP
PHP编程函数安全篇
Jan 08 #PHP
You might like
php添加文章时生成静态HTML文章的实现代码
2013/02/17 PHP
php显示指定目录下子目录的方法
2015/03/20 PHP
PHP curl模拟登录带验证码的网站
2015/11/30 PHP
分析PHP中单双引号的误区和双引号小隐患
2016/07/19 PHP
符合标准的js表单提交的代码
2007/09/13 Javascript
js和jquery使按钮失效为不可用状态的方法
2014/01/26 Javascript
jquery实现对联广告的方法
2015/02/05 Javascript
JS实现控制表格只显示行边框或者只显示列边框的方法
2015/03/31 Javascript
Javascript对象Clone实例分析
2015/06/09 Javascript
jQuery插件实现文字无缝向上滚动效果代码
2016/02/25 Javascript
全面解析Bootstrap中scrollspy(滚动监听)的使用方法
2016/06/06 Javascript
jQuery实现获取元素索引值index的方法
2016/09/18 Javascript
jquery操作checkbox火狐下第二次无法勾选的解决方法
2016/10/10 Javascript
AngularJS入门教程之MVC架构实例分析
2016/11/01 Javascript
分享一道关于闭包、bind和this的面试题
2017/02/20 Javascript
jQuery EasyUI 为Combo,Combobox添加清除值功能的实例
2017/04/13 jQuery
JavaScript编写的网页小游戏,很给力
2017/08/18 Javascript
微信小程序实现下载进度条的方法
2017/12/08 Javascript
微信小程序switch组件使用详解
2018/01/31 Javascript
Vue实现根据hash高亮选项卡
2019/05/27 Javascript
理解Proxy及使用Proxy实现vue数据双向绑定操作
2020/07/18 Javascript
解决Mint-ui 框架Popup和Datetime Picker组件滚动穿透的问题
2020/11/04 Javascript
Python使用urllib2获取网络资源实例讲解
2013/12/02 Python
pycharm 使用心得(四)显示行号
2014/06/05 Python
Python中的闭包总结
2014/09/18 Python
使用Python的urllib和urllib2模块制作爬虫的实例教程
2016/01/20 Python
python numpy生成等差数列、等比数列的实例
2020/02/25 Python
Python 实现3种回归模型(Linear Regression,Lasso,Ridge)的示例
2020/10/15 Python
关于探究python中sys.argv时遇到的问题详解
2021/02/23 Python
Html5中的桌面通知Notification的实现
2018/09/25 HTML / CSS
户外婚礼策划方案
2014/02/08 职场文书
个人自我鉴定总结
2014/03/25 职场文书
镇党政领导班子民主生活会思想汇报
2014/10/11 职场文书
单位接收函格式
2015/01/30 职场文书
消费者理赔投诉书
2015/07/02 职场文书
通讯稿范文
2015/07/22 职场文书