<?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_r( "humans" ); //取得humans标签的对象数组

foreach( $humans as $human )

{

$names = $human->getElementsByTagName_r( "name" ); //取得name的标签的对象数组

$name = $names->item(0)->nodeValue; //取得node中的值,如<name> </name>

$sexs = $human->getElementsByTagName_r( "sex" );

$sex = $sexs->item(0)->nodeValue;

$olds = $human->getElementsByTagName_r( "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正则表达式来记取数据 / http://www.pprar.com

<?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的方法很多,简单举几个。上面四种方法都是可以把标签中的数据读出来,<name>张映</name>.但是他们的测重点不同,前三种方法的读取xml的function的设计重点,是为了读取标签中的值,相当于jquery中的text()方法,而 xmlreader呢他就不太一样,他的重点不在读取标签中的值,而读取标签的属性,把要传送的数据,都放在属性中(不过我上面写的那个方法还是取标签中的值,因为xml文件已经给定了,我就不想在搞xml文件出来了)。举个例子解释一下,

<data name=’张映’ sex=’男’ old=’28′></data>

xmlreader的设计重点是为了读data里面的name sex old的值,而读取<data></data>的内容就比较麻烦了。他相当于jquery中attr(”);这个东西。

大家如果有好的办法读取xml,可以加上

php读取xml的神器的更多相关文章

  1. 读取xml数据装配到字典中之应用场景

    前段时间看到支付宝设置里面有个多语言这个功能,蛮有意思的,就想双休没事的话做个相关的demo玩玩,可是礼拜六被妹子拽出去玩了一天,来大上海有大半年了,基本没有出去玩过,妹子说我是超级宅男,也不带她出去 ...

  2. 自己动手之使用反射和泛型,动态读取XML创建类实例并赋值

    前言: 最近小匹夫参与的游戏项目到了需要读取数据的阶段了,那么觉得自己业余时间也该实践下数据相关的内容.那么从哪入手呢?因为用的是Unity3d的游戏引擎,思来想去就选择了C#读取XML文件这个小功能 ...

  3. MFC如何读取XML

    <?xml version="1.0" encoding="utf-8"?> <Cases> <case> <No&g ...

  4. 使用dom4j读取xml连接数据库与之单例模式

    使用dom4j读取xml ,加入jar包 dom4j-1.6.1.jar jaxen-1.1-beta-6.jar public class XmlConfigReader { //懒汉式,延迟加载 ...

  5. java DOM4J 读取XML

    最近学习Java,在处理XML文档的时候,查阅相关资料,发现了DOM4J这个jre库,相对C#的XML处理来说,功能还算是跟得上 下面展示一篇我自己写的一个XML读取测试 import java.ut ...

  6. C#中常用的读取xml的几种方法(转)

    本文完全来源于http://blog.csdn.net/tiemufeng1122/article/details/6723764,仅作个人学习之用. XML文件是一种常用的文件格式,例如WinFor ...

  7. wcf序列化大对象时报错:读取 XML 数据时,超出最大

    错误为: 访问服务异常:格式化程序尝试对消息反序列化时引发异常: 尝试对参数 http://tempuri.org/ 进行反序列化时出 错: request.InnerException 消息是“反序 ...

  8. C#中常用的几种读取XML文件的方法

    1.C#中常用的几种读取XML文件的方法:http://blog.csdn.net/tiemufeng1122/article/details/6723764/

  9. 利用反射与dom4j读取javabean生成对应XML和读取XML得到对应的javabean对象集合

    转自:http://blog.csdn.net/zhao19861029/article/details/8473245 首先实现生成对应的JAVAbean的XML文件方法 /** * DMO4J写入 ...

随机推荐

  1. Linux源码编译安装MySQL5.7

    目录[-] 一.环境准备: 二.升级系统: 三.做一些准备工作(以下Linux命令均在su到root用户操作): 四.开始编译安装mysql-5.7.9: 一.环境准备: 我尝试过以下环境都是能成功的 ...

  2. 持续集成之Jenkins+Gitlab简介 [一]

    转载:http://blog.csdn.net/abcdocker/article/details/53840449 持续集成概念 持续集成Continuous Integration 持续交付Con ...

  3. 网络方面的常用命令 & 常用端口介绍

    在网络方面我们常常会用到如下命令: (1)ping命令:我们常常用来判断2台或2台以上的机器间是否网络连通. ping 192.168.1.88 -t 如果想看任何命令的参数是什么意思,我们只需要:命 ...

  4. 更改 easyUI 的皮肤样式

    我的版本是:jquery-easyui-1.3.2.根据官方提供的皮肤样式,——在theme 里面: 只需要在引入的 页面中 link样式的地址改变即可: <link rel="sty ...

  5. sql笔记 获取指定数据库下的所有表

    SELECT Name FROM 数据库名称..SysObjects Where XType='U' ORDER BY Name XType='U' 标识查询用户创建的表 S为系统创建的表

  6. json2.js

    /* http://www.JSON.org/json2.js 2010-03-20 Public Domain. NO WARRANTY EXPRESSED OR IMPLIED. USE AT Y ...

  7. JQuery选择器大全 前端面试送命题:面试题篇 对IOC和DI的通俗理解 c#中关于协变性和逆变性(又叫抗变)帮助理解

    JQuery选择器大全   jQuery 的选择器可谓之强大无比,这里简单地总结一下常用的元素查找方法 $("#myELement")    选择id值等于myElement的元素 ...

  8. rabbitMQ 基本概念

    RabbitMQ 整体上是一个生产者与消费者模型,主要负责接收.存储和转发消息.可以把消 息传递的过程想象成:当你将一个包裹送到邮局,邮局会暂存并最终将邮件通过邮递员送到收件人的手上, RabbitM ...

  9. MVC之ActionFilterAttribute自定义属性

    ActionFilterAttribute里有OnActionExecuting方法,跟Controller一样, 同是抽象实现了IActionFilter接口. // 登录认证特性 public c ...

  10. memcached 命令行举例

    1.启动Memcache  常用参数
memcached 1.4.3 
 -p <num> 设置端口号(默认不设置为: 11211) 
 -U <num> UDP监听端口 (默 ...