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语言中global和$GLOBALS[]的分析 之二
Feb 02 PHP
PHP autoload与spl_autoload自动加载机制的深入理解
Jun 05 PHP
ThinkPHP基于PHPExcel导入Excel文件的方法
Oct 15 PHP
Codeigniter(CI)框架分页函数及相关知识
Nov 03 PHP
Ubuntu中搭建Nginx、PHP环境最简单的方法
Mar 05 PHP
PHP设计模式之工厂模式与单例模式
Sep 28 PHP
PHP房贷计算器实例代码,等额本息,等额本金
Apr 01 PHP
PHP排序算法之堆排序(Heap Sort)实例详解
Apr 21 PHP
PHP实现的mysql读写分离操作示例
May 22 PHP
PHP聊天室简单实现方法详解
Dec 08 PHP
PHP文件打开关闭及读写操作示例解析
Aug 06 PHP
php中pcntl_fork详解
Apr 01 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/08/19 PHP
Yii使用ajax验证显示错误messagebox的解决方法
2014/12/03 PHP
PHP实现的曲线统计图表示例
2016/11/10 PHP
zTree插件之单选下拉菜单实例代码
2013/11/07 Javascript
javascript简单性能问题及学习笔记
2014/02/04 Javascript
JavaScript中的类(Class)详细介绍
2014/12/30 Javascript
总结javascript中的六种迭代器
2016/08/16 Javascript
基于jquery实现的银行卡号每隔4位自动插入空格的实现代码
2016/11/22 Javascript
angular2倒计时组件使用详解
2017/01/12 Javascript
Bootstrap BootstrapDialog使用详解
2017/02/17 Javascript
jQuery validata插件实现方法
2017/06/25 jQuery
JS实现unicode和UTF-8之间的互相转换互转
2017/07/05 Javascript
基于jQuery实现图片推拉门动画效果的两种方法
2017/08/26 jQuery
Express + Session 实现登录验证功能
2017/09/08 Javascript
JS原型与继承操作示例
2019/05/09 Javascript
Vue中keep-alive 实现后退不刷新并保持滚动位置
2020/03/17 Javascript
vue-admin-template配置快捷导航的代码(标签导航栏)
2020/09/04 Javascript
vue使用require.context实现动态注册路由
2020/12/25 Vue.js
[00:35]DOTA2上海特级锦标赛 EG战队宣传片
2016/03/04 DOTA
[01:04]DOTA2上海特锦赛现场采访 FreeAgain遭众解说围攻
2016/03/25 DOTA
跟老齐学Python之赋值,简单也不简单
2014/09/24 Python
python 垃圾收集机制的实例详解
2017/08/20 Python
python 图片去噪的方法示例
2019/07/09 Python
Django中使用MySQL5.5的教程
2019/12/18 Python
python 爬取马蜂窝景点翻页文字评论的实现
2020/01/20 Python
阿迪达斯希腊官方网上商店:adidas希腊
2019/04/06 全球购物
上海方立数码笔试题
2013/10/18 面试题
大学生个人事迹材料
2014/01/21 职场文书
《梅兰芳学艺》教学反思
2014/02/24 职场文书
授权委托书(完整版)
2014/09/10 职场文书
成绩报告单家长评语
2014/12/30 职场文书
餐饮服务员岗位职责
2015/02/09 职场文书
个人工作能力自我评价
2015/03/05 职场文书
法制教育观后感
2015/06/17 职场文书
幼儿园大班教学反思
2016/03/02 职场文书
正确使用MySQL INSERT INTO语句
2021/05/26 MySQL