php读取xml的几种方法介绍

2025-07-04 23:29:51

1、首先我们做一个简单的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>

2、下面我们开始介绍用php读取xml的几种方法: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";}?>

3、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>";}?>

4、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>" ;}?>

5、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++;}}?>

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢