php xmlreader simplexml等读取xml

php xmlreader simplexml等读取xml

张映 发表于 2010-04-15

分类目录: php

一,什么是xml,xml有什么用途

XML(Extensible Markup Language)即可扩展标记语言,它与HTML一样,都是SGML(Standard Generalized Markup Language,标准通用标记语言)。Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用。

XML的用途很多,可以用来存储数据,可以用来做数据交换,为很多种应用软件提示数据等等。

二,php读取xml的方法

xml源文件

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   <humans>  
  3.   <zhangying>  
  4.   <name>张映</name>  
  5.   <sex></sex>  
  6.   <old>28</old>  
  7.   </zhangying>  
  8.   <tank>  
  9.   <name>tank</name>  
  10.   <sex></sex>  
  11.   <old>28</old>  
  12.   </tank>  
  13.   </humans>  

1)DOMDocument读取xml

  1.   <?php  
  2.   $doc = new DOMDocument();  
  3.   $doc->load('person.xml');         //读取xml文件  
  4.     
  5.   $humans = $doc->getElementsByTagName( "humans" );         //取得humans标签的对象数组  
  6.   
  7.   foreach$humans as $human )  
  8.   {  
  9.   $names = $human->getElementsByTagName( "name" );           //取得name的标签的对象数组  
  10.   $name = $names->item(0)->nodeValue;                                        //取得node中的值,如<name> </name>  
  11.     
  12.   $sexs = $human->getElementsByTagName( "sex" );  
  13.   $sex = $sexs->item(0)->nodeValue;  
  14.    
  15.   $olds = $human->getElementsByTagName( "old" );  
  16.   $old = $olds->item(0)->nodeValue;  
  17.    
  18.   echo "$name - $sex - $old\n";  
  19.    
  20.   }  
  21.   ?>  

2)simplexml读取xml

  1. <?php  
  2. $xml_array=simplexml_load_file('person.xml');                        //将XML中的数据,读取到数组对象中  
  3.   
  4. foreach($xml_array as $tmp){  
  5.  echo $tmp->name."-".$tmp->sex."-".$tmp->old."<br>";     
  6. }  
  7.   
  8. ?>  

3)用php正则表达式来记取数据

  1. <?php  
  2.   $xml = "";  
  3.   $f = fopen('person.xml''r');  
  4.   while$data = fread$f, 4096 ) ) {  
  5.    $xml .= $data;  
  6.   }  
  7.   fclose( $f );  
  8.   // 上面读取数据  
  9.   preg_match_all( "/\<humans\>(.*?)\<\/humans\>/s"$xml$humans );       //匹配最外层标签里面的内容  
  10.     
  11.   foreach$humans[1] as $k=>$human )  
  12.   {  
  13.    preg_match_all( "/\<name\>(.*?)\<\/name\>/"$human$name );             //匹配出名字  
  14.    preg_match_all( "/\<sex\>(.*?)\<\/sex\>/"$human$sex );                        //匹配出性别  
  15.    preg_match_all( "/\<old\>(.*?)\<\/old\>/"$human$old );                        //匹配出年龄  
  16.   }  
  17.   
  18.  foreach($name[1] as $key=>$val){  
  19.   echo $val." - ".$sex[$key][1]." - ".$old[$key][1]."<br>" ;  
  20.  }  
  21. ?>  

4)xmlreader来读取xml数据

  1. <?php  
  2. $reader = new XMLReader();  
  3. $reader->open('person.xml');                                                     //读取xml数据  
  4. $i=1;  
  5. while ($reader->read()) {                                                              //是否读取  
  6.  if ($reader->nodeType == XMLReader::TEXT) {               //判断node类型  
  7.   if($i%3){  
  8.    echo $reader->value;                                                                  //取得node的值  
  9.   }else{  
  10.    echo $reader->value."<br>" ;  
  11.   }  
  12.   $i++;  
  13.  }  
  14. }  
  15. ?>  

三,小结

读取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('');这个东西。

上面纯属个人看法,请大家指正


转载请注明
作者:海底苍鹰
地址:http://blog.51yip.com/php/591.html


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值