将xml解析为数组

时间:2015-12-09 07:24:53

标签: php xml

我有以下XML字符串。我想用它标签。我试过 simplexml_load_string ,但这给了我以下警告。

PHP代码

 <?
$data='<?xml version="1.0" ?><ns00:category xmlns:ns00="urn:productlist">DEX</ns00:category><ns00:type xmlns:ns00="urn:productlist">Type A</ns00:type>';
$xml=simplexml_load_string($data);
print_r($xml);
?>

警告

simplexml_load_string(): X&lt;/ns00:category&gt;&lt;ns00:type xmlns:ns00=&quot;urn:productlist&quot;&gt;Type A&lt;/ns00:type&gt;&lt;cat&gt; in C:\wamp\www\wsdl4\xml.php on line 3
simplexml_load_string(): Entity: line 1: parser error : Premature end of data in tag cat line 1
simplexml_load_string(): ^ 

我想使用这个xml标签。

1 个答案:

答案 0 :(得分:0)

问题是您使用的XML不是“propper”格式,

如果XML是由您生成的,那么您必须修复XML编写器,使用生成它的函数,或者只需遵循XML Core Standards

如果XML不是由你生成的,那么你需要做一些解决方法,我做了很多,我建议你:

小文件:

  

- &GT;通过简单的get_file_contents()

读取它      

- &GT;以您需要的任何方式拆分它(快速开发的REGEX,硬编码的switch-cases / strpos / substr以获得更好的性能)

BIG FILE大于500MB:

  

- &GT;尝试使用Linux命令(如SED,AWK甚至XMLLINT)修复XML格式,然后再进行解析;

你也可以试试这个:

  

SimpleXMLReader,因为它读取XML步骤/ by /步骤,也许你甚至不需要解决方法.. https://github.com/dkrnl/SimpleXMLReader唯一的问题是它像地狱一样慢,对我的应用程序无法使用。