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面向对象全攻略 (十六) 对象的串行化
Sep 30 PHP
apache+php完美解决301重定向的两种方法
Jun 08 PHP
PHP分多步骤填写发布信息的简单方法实例代码
Sep 23 PHP
PHP读取数据库并按照中文名称进行排序实现代码
Jan 29 PHP
php批量删除cookie的简单实现方法
Jan 26 PHP
php定义一个参数带有默认值的函数实例分析
Mar 16 PHP
学习php设计模式 php实现合成模式(composite)
Dec 08 PHP
PHP的Laravel框架结合MySQL与Redis数据库的使用部署
Mar 21 PHP
PHP递归遍历指定文件夹内的文件实现方法
Nov 15 PHP
PHP实现的堆排序算法详解
Aug 17 PHP
php实现的mongoDB单例模式操作类
Jan 20 PHP
实例讲解通过​PHP创建数据库
Jan 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
3种平台下安装php4经验点滴
2006/10/09 PHP
Smarty模板常见的简单应用分析
2016/11/15 PHP
PHP接口并发测试的方法(推荐)
2016/12/15 PHP
ThinkPHP 模板substr的截取字符串函数详解
2017/01/09 PHP
PHP pthreads v3使用中的一些坑和注意点分析
2020/02/21 PHP
javascript数组组合成字符串的脚本
2021/01/06 Javascript
js文件中调用js的实现方法小结
2009/10/23 Javascript
jQuery Study Notes学习笔记 (二)
2010/08/04 Javascript
js动态给table添加/删除tr的方法
2013/08/02 Javascript
Jquery 获取对象的几种方式介绍
2014/01/17 Javascript
巧用jquery解决下拉菜单被Div遮挡的相关问题
2014/02/13 Javascript
javascript 密码框防止用户粘贴和复制的实现代码
2014/02/17 Javascript
javascript限制用户只能输汉字中文的方法
2014/11/20 Javascript
jQuery实现的五子棋游戏实例
2015/06/13 Javascript
Bootstrap布局方式详解
2016/05/27 Javascript
jQuery的extend方法【三种】
2016/12/14 Javascript
JS实现京东首页之页面顶部、Logo和搜索框功能
2017/01/12 Javascript
详解基于Vue-cli搭建的项目如何和后台交互
2018/06/29 Javascript
深入理解es6块级作用域的使用
2019/03/28 Javascript
详解JavaScript中的函数、对象
2019/04/01 Javascript
详解vue 自定义marquee无缝滚动组件
2019/04/09 Javascript
[01:20]PWL开团时刻DAY9——听说潮汐没用?
2020/11/10 DOTA
[45:17]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第三场 1月9日
2021/03/11 DOTA
python 简单的绘图工具turtle使用详解
2017/06/21 Python
使用python实现BLAST
2018/02/12 Python
pytorch获取vgg16-feature层输出的例子
2019/08/20 Python
纯CSS绘制漂亮的圆形图案效果
2014/05/07 HTML / CSS
Maje德国官网:法国女性成衣品牌
2017/02/10 全球购物
请编写一个 C 函数,该函数在给定的内存区域搜索给定的字符,并返回该字符所在位置索引值
2014/09/15 面试题
班主任寄语大全
2014/04/04 职场文书
股东合作协议书范本
2014/04/14 职场文书
“四风”问题对照检查材料思想汇报
2014/09/16 职场文书
甜品蛋糕店创业计划书
2014/09/21 职场文书
2014年高数考试作弊检讨书
2014/12/14 职场文书
Django给表单添加honeypot验证增加安全性
2021/05/06 Python
使用opencv-python如何打开USB或者笔记本前置摄像头
2022/06/21 Python