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 相关文章推荐
Dedecms常用函数解析
Feb 01 PHP
php下把数组保存为文件格式的实例应用
Feb 08 PHP
php数据库连接时容易出错的特殊符号问题
Sep 01 PHP
php 无法加载mysql的module的时候的配置的解决方案引发的思考
Jan 27 PHP
限制ckeditor上传图片文件大小的方法
Nov 15 PHP
Yii Framework框架获取分类下面的所有子类方法
Jun 20 PHP
PHP简单实现“相关文章推荐”功能的方法
Jul 19 PHP
PHP实现取得HTTP请求的原文
Aug 18 PHP
PHP中构造函数和析构函数解析
Oct 10 PHP
通过php删除xml文档内容的方法
Jan 23 PHP
php超快高效率统计大文件行数
Jul 05 PHP
PHP5.3新特性小结
Feb 14 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破解防盗链图片的一个简单方法
2014/06/07 PHP
PHP APC配置文件2套和参数详解
2014/06/11 PHP
PHP中__FILE__、dirname与basename用法实例分析
2014/12/01 PHP
CodeIgniter表单验证方法实例详解
2016/03/03 PHP
Zend Framework缓存Cache用法简单实例
2016/03/19 PHP
js计数器代码
2006/11/04 Javascript
jQuery层次选择器选择元素使用介绍
2013/04/18 Javascript
jquery全选checkBox功能实现代码(取消全选功能)
2013/12/10 Javascript
JSF中confirm弹出框的用法示例介绍
2014/01/07 Javascript
使用jQuery重置(reset)表单的方法
2014/05/05 Javascript
JavaScript模块随意拖动示例代码
2014/05/27 Javascript
JavaScript中window.showModalDialog()用法详解
2014/12/18 Javascript
JQuery中DOM事件绑定用法详解
2015/06/13 Javascript
Bootstrap模块dropdown实现下拉框响应
2016/05/22 Javascript
jQuery下拉菜单的实现代码
2016/11/03 Javascript
详解angular2封装material2对话框组件
2017/03/03 Javascript
前端页面文件拖拽上传模块js代码示例
2017/05/19 Javascript
Webpack打包css后z-index被重新计算的解决方法
2017/06/18 Javascript
微信小程序 rich-text的使用方法
2017/08/04 Javascript
深入浅析JavaScript中的RegExp对象
2017/09/18 Javascript
Vue.js简易安装和快速入门(第二课)
2017/10/17 Javascript
javascript实现数字配对游戏的实例讲解
2017/12/14 Javascript
vue.js2.0 实现better-scroll的滚动效果实例详解
2018/08/13 Javascript
axios全局注册,设置token,以及全局设置url请求网段的方法
2018/09/25 Javascript
vue+web端仿微信网页版聊天室功能
2019/04/30 Javascript
利用Vue-draggable组件实现Vue项目中表格内容的拖拽排序
2019/06/07 Javascript
JS实现点击生成UUID的方法完整实例【基于jQuery】
2019/06/12 jQuery
JS数组降维的实现Array.prototype.concat.apply([], arr)
2020/04/28 Javascript
基于ID3决策树算法的实现(Python版)
2017/05/31 Python
对python opencv 添加文字 cv2.putText 的各参数介绍
2018/12/05 Python
解决Django加载静态资源失败的问题
2019/07/28 Python
Python shelve模块实现解析
2019/08/28 Python
详解Python中pyautogui库的最全使用方法
2020/04/01 Python
CSS 3.0文字悬停跳动特效代码
2020/10/26 HTML / CSS
彪马加拿大官网:PUMA加拿大
2018/10/04 全球购物
这段代码难道不该打印出56吗
2013/02/27 面试题