我有以下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</ns00:category><ns00:type xmlns:ns00="urn:productlist">Type A</ns00:type><cat> 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标签。
答案 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唯一的问题是它像地狱一样慢,对我的应用程序无法使用。