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中将时间差转换为字符串提示的实现代码
Aug 08 PHP
php生成静态文件的多种方法分享
Jul 17 PHP
简单的php数据库操作类代码(增,删,改,查)
Apr 08 PHP
深入PHP curl参数的详解
Jun 17 PHP
php连接函数implode与分割explode的深入解析
Jun 26 PHP
PHP实现QQ空间自动回复说说的方法
Dec 02 PHP
WordPress中给媒体文件添加分类和标签的PHP功能实现
Dec 31 PHP
深入浅析php中sprintf与printf函数的用法及区别
Jan 08 PHP
Joomla使用Apache重写模式的方法
May 04 PHP
php版交通银行网银支付接口开发入门教程
Sep 26 PHP
基于php流程控制语句和循环控制语句(讲解)
Oct 23 PHP
Laravel 集成微信用户登录和绑定的实现
Dec 27 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
收听困难?教您超简便短波广播抗干扰方法!
2021/03/01 无线电
基于php的微信公众平台开发入门实例
2015/04/15 PHP
浅析php设计模式之数据对象映射模式
2016/03/03 PHP
遍历echsop的region表形成缓存的程序实例代码
2016/11/01 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
Prototype Array对象 学习
2009/07/19 Javascript
jQuery中Form相关知识汇总
2015/01/06 Javascript
JavaScript实现将文本框的值插入指定位置的方法
2015/08/13 Javascript
实用又漂亮的BootstrapValidator表单验证插件
2016/05/30 Javascript
原生js实现淘宝购物车功能
2020/06/23 Javascript
jQuery实现百度登录框的动态切换效果
2017/04/21 jQuery
获取本机IP地址的实例(JavaScript / Node.js)
2017/11/24 Javascript
angularJS1 url中携带参数的获取方法
2018/10/09 Javascript
详解基于Wepy开发小程序插件(推荐)
2019/08/01 Javascript
webpack常用构建优化策略小结
2019/11/21 Javascript
Vuex实现数据共享的方法
2019/12/20 Javascript
javascript实现前端input密码输入强度验证
2020/06/24 Javascript
用Python和MD5实现网站挂马检测程序
2014/03/13 Python
Python中请使用isinstance()判断变量类型
2014/08/25 Python
Python中的列表生成式与生成器学习教程
2016/03/13 Python
关于django 1.10 CSRF验证失败的解决方法
2019/08/31 Python
python实现上传文件到linux指定目录的方法
2020/01/03 Python
python中的测试框架
2020/11/13 Python
5 分钟读懂Python 中的 Hook 钩子函数
2020/12/09 Python
浅谈css3中的渐进增强和优雅降级
2017/12/01 HTML / CSS
HTML5 Web缓存和运用程序缓存(cookie,session)
2018/01/11 HTML / CSS
美国在线咖啡、茶和餐厅供应商:LollicupStore
2018/05/04 全球购物
迪奥官网:Dior.com
2018/12/04 全球购物
澳大利亚家具商店:Freedom
2020/12/17 全球购物
进程的查看和调度分别使用什么命令
2015/03/25 面试题
农村产权制度改革实施方案
2014/03/21 职场文书
中药学自荐信
2014/06/15 职场文书
合同意向书范本
2014/07/30 职场文书
关于运动会广播稿200字
2014/10/08 职场文书
2014办公室年度工作总结
2014/12/09 职场文书
大学生个人总结范文
2015/02/15 职场文书