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的超级变量$_GET获取HTML表单(Form) 数据
May 07 PHP
解析isset与is_null的区别
Aug 09 PHP
sae使用smarty模板的方法
Dec 17 PHP
ubuntu12.04使用c编写php扩展模块教程分享
Dec 25 PHP
一个PHP二维数组排序的函数分享
Jan 17 PHP
zf框架的数据库追踪器使用示例
Mar 13 PHP
Joomla使用Apache重写模式的方法
May 04 PHP
thinkphp3.2.3版本的数据库增删改查实现代码
Sep 22 PHP
Nginx环境下PHP flush失效的解决方法
Oct 19 PHP
php实现微信企业号支付个人的方法详解
Jul 26 PHP
php使用curl伪造来源ip和refer的方法示例
May 08 PHP
安装docker和docker-compose实例详解
Jul 30 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 面试碰到过的问题 在此做下记录
2011/06/09 PHP
THINKPHP项目开发中的日志记录实例分析
2014/12/01 PHP
Yii2.0表关联查询实例分析
2016/07/18 PHP
Linux基于php-fpm模式的lamp搭建phpmyadmin的方法
2018/10/25 PHP
解决laravel中日志权限莫名变成了root的问题
2019/10/17 PHP
laravel-admin 实现在指定的相册下添加照片
2019/10/21 PHP
Javascript 获取LI里的内容
2008/12/17 Javascript
JavaScript 私有成员分析
2009/01/13 Javascript
JavaScript Event学习第八章 事件的顺序
2010/02/07 Javascript
使用JavaScript修改浏览器URL地址栏的实现代码
2013/10/21 Javascript
jquery实现拖拽调整Div大小
2015/01/30 Javascript
JS返回iframe中frameBorder属性值的方法
2015/04/01 Javascript
JS+CSS实现的经典tab选项卡效果代码
2015/09/16 Javascript
Javascript的无new构建实例详解
2016/05/15 Javascript
js操作浏览器的参数方法
2017/01/21 Javascript
js脚本编写简单刷票投票系统
2017/06/27 Javascript
js学习总结之DOM2兼容处理顺序问题的解决方法
2017/07/27 Javascript
jquery登录的异步验证操作示例
2019/05/09 jQuery
js基于canvas实现时钟组件
2021/02/07 Javascript
Python常用的文件及文件路径、目录操作方法汇总介绍
2015/05/21 Python
一个基于flask的web应用诞生 组织结构调整(7)
2017/04/11 Python
对python 矩阵转置transpose的实例讲解
2018/04/17 Python
python基础教程之while循环
2019/08/14 Python
详解Python time库的使用
2019/10/10 Python
python实现视频读取和转化图片
2019/12/10 Python
jupyter notebook清除输出方式
2020/04/10 Python
Python实现爬取网页中动态加载的数据
2020/08/17 Python
Python3中FuzzyWuzzy库实例用法
2020/11/18 Python
python爬虫快速响应服务器的做法
2020/11/24 Python
介绍java中初始化块的使用
2012/09/11 面试题
业务员岗位职责
2013/11/16 职场文书
2014年民政局关于保密工作整改措施
2014/09/19 职场文书
2015年安全生产目标责任书
2015/01/29 职场文书
2015年团支书工作总结
2015/04/03 职场文书
党员带头倡议书
2015/04/29 职场文书
Redis如何一键部署脚本
2021/04/12 Redis