很多站长朋友们都不太清楚PHP解析复杂xml,今天小编就来给大家整理PHP解析复杂xml,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 php解析XML问题 2、 php解析xml 3、 几种php解析xml方式 4、 php如何解析多级xml报文? 5、 php 解析xml 的方法 php解析XML问题$string = '<i><d p="123456">654321</d><d p="123456">654321</d></i>';
$xmlObject = simplexml_load_string($string);
$result = array();
if($xmlObject) {
$i = 0;
foreach($xmlObject->d as $key => $value) {
$result[$i][$key] = $value->__toString();
foreach ($value->attributes() as $attr => $data) {
$result[$i][$attr] = $data->__toString();
}
++$i;
}
print_r($result);
}
php解析xml$members_list = $doc->getElementsByTagName("member");
然后用
$member = $members_list->item($i);(这样就可以选择特定的标签,$i为你所需要的标签序列,从0开始算的,需要第一个就用$i=0第二个用$i=1)
用item是选择标签序号,后面的属性有nodeValue(节点值)和nodeName(节点名),foreach实际上是从item(0)一直搜索到最后一个,在$member = $members_list->item($i);可用通过$member->length可以返回标签个数属性(就是有几个member)
几种php解析xml方式最简单的实用的:SimpleXML是PHP5后提供的一套简单易用的xml工具集,可以把xml转换成方便处理的对象,也可以组织生成xml数据。不过它不适用于包含namespace的xml,而且要保证xml格式完整(well-formed)。它提供了三个方法:simplexml_import_dom、simplexml_load_file、simplexml_load_string,函数名很直观地说明了函数的作用。三个函数都返回SimpleXMLElement对象,数据的读取/添加都是通过SimpleXMLElement操作
参数使用,可以参考手册
php如何解析多级xml报文?看了一下xml结构,感觉该代码不是完整版,看到你用 simplexml_load_string 和 loadXML来解析,这2个肯定解析,但是不推荐,如果xml结构多且复杂解析效率会很低,推荐用xml_parser_create实现,这个效率要快很多。
根据你贴的 xml,发现是xml里嵌套xml,我的思路是先解析出第一层的xml数据集,第一次层的xml数据集其实也就是你待解析的xml,采用循环逐个再次解析即可得到你想要的数据了,贴上我在其他项目中用xml_parser_create的代码供你参考。
private function parseXml($xml, $fileName)
{
$p = xml_parser_create();
xml_parse_into_struct($p, $xml, $vals, $index);
xml_parser_free($p);
$cnt = count($index['URL']);
$xmlData = [];
for ($i = 0; $i < $cnt; $i++) {
$data = [];
$data['url'] = $vals[$index['URL'][$i]]['value'];
$data['title'] = $vals[$index['TITLE'][$i]]['value'];
$data['file'] = $fileName;
$xmlData[] = $data;
}
return $xmlData;
}
php 解析xml 的方法$url =“给你接口的路径";
$doms = simplexml_load_file ( $url );//直接把路径放在simplexml_load_file 方法里就行$doms里存放的就是读取的 XML 信息,你可以print_r($doms)试一下
然后用循环你就可以获得 XML里面的信息了
foreach ( $doms->节点名字 as $studys )
{
echo $studys."</br>";//输入一下结果可以看一下
}
注意:simplexml_load_file ( $url )这个方法解析出来的中文只能是utf-8 如果你的项目使用的不是该编码会出现中文乱码,你可以用
iconv ( "UTF-8", "GB2312", “这里放你要转换的内容”);转换能你用的编码格式例如转换成GB2312
关于PHP解析复杂xml的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于PHP解析复杂xml php解析html文件的详细内容...