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 相关文章推荐
PHP XML数据解析代码
May 26 PHP
PHP的SQL注入实现(测试代码安全不错)
Feb 27 PHP
php实现保存submit内容之后禁止刷新
Mar 19 PHP
ThinkPHP中的三大自动简介
Aug 22 PHP
PHP return语句另类用法不止是在函数中
Sep 17 PHP
分享最受欢迎的5款PHP框架
Nov 27 PHP
php根据用户语言跳转相应网页
Nov 04 PHP
PHP MVC框架路由学习笔记
Mar 02 PHP
thinkPHP5.0框架自动加载机制分析
Mar 18 PHP
PHP实现留言板功能的详细代码
Mar 25 PHP
php实现与python进行socket通信的方法示例
Aug 30 PHP
Laravel使用Queue队列的技巧汇总
Sep 02 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标记--strip_tags与htmlspecialchars的区别详解
2013/06/26 PHP
jquery+css3打造一款ajax分页插件(自写)
2014/06/18 Javascript
对JavaScript客户端应用编程的一些建议
2015/06/24 Javascript
JavaScript为事件句柄绑定监听函数实例详解
2015/12/15 Javascript
通过jquery实现页面的动画效果(实例代码)
2016/09/18 Javascript
JS经典正则表达式笔试题汇总
2016/12/15 Javascript
Vue2 使用 Echarts 创建图表实例代码
2017/05/18 Javascript
Vue 组件传值几种常用方法【总结】
2018/05/28 Javascript
Angular-UI Bootstrap组件实现警报功能
2018/07/16 Javascript
基于layui框架响应式布局的一些使用详解
2019/09/16 Javascript
Javascript ParentNode和ChildNode接口原理解析
2020/03/16 Javascript
详解Webpack抽离第三方类库以及common解决方案
2020/03/30 Javascript
v-slot和slot、slot-scope之间相互替换实例
2020/09/04 Javascript
[13:16]INFAMOUS vs VGJ T BO3
2018/06/07 DOTA
深度剖析使用python抓取网页正文的源码
2014/06/11 Python
在Python中操作时间之mktime()方法的使用教程
2015/05/22 Python
python删除列表内容
2015/08/04 Python
python爬虫入门教程--利用requests构建知乎API(三)
2017/05/25 Python
通过Py2exe将自己的python程序打包成.exe/.app的方法
2018/05/26 Python
TensorFlow数据输入的方法示例
2018/06/19 Python
使用Python实现租车计费系统的两种方法
2018/09/29 Python
python http基本验证方法
2018/12/26 Python
Python3将数据保存为txt文件的方法
2019/09/12 Python
python实现UDP协议下的文件传输
2020/03/20 Python
英国和爱尔兰的自炊式豪华度假小屋:Rural Retreats
2018/06/08 全球购物
Skechers越南官方网站:来自美国的运动休闲品牌
2021/02/22 全球购物
大学生如何写自荐信
2014/01/08 职场文书
广告创意求职信
2014/03/17 职场文书
实习指导老师评语
2014/04/26 职场文书
社区娱乐活动方案
2014/08/21 职场文书
博士生专家推荐信
2015/03/25 职场文书
装饰技术负责人岗位职责
2015/04/13 职场文书
2015小学语文教师个人工作总结
2015/05/20 职场文书
2015年预防青少年违法犯罪工作总结
2015/05/22 职场文书
摩登时代观后感
2015/06/03 职场文书
小学数学教学反思范文
2016/02/16 职场文书