无效格式xml的最佳PHP解析器[重复]

Posted

技术标签:

【中文标题】无效格式xml的最佳PHP解析器[重复]【英文标题】:Best PHP parser for invalid format xml [duplicate] 【发布时间】:2013-03-24 04:02:17 【问题描述】:

什么是最好的 xml 解析器,尤其适用于技术上无效格式且缺少 <?xml 标记的 XML?

我不能使用 simpleXML,因为这会导致无效的错误。我知道我可以在获得 xml 后手动添加我需要的标签,但我更喜欢看看你们认为将 xml 解析为 php 中的数组的最佳方法。

【问题讨论】:

如果它不是有效的 xml,那么从技术上讲,它不是真正的 xml……所以不要看 xml 解析器来处理不是真正的 xml。期待一只鸡成为你的香蕉并没有真正的用处。 ...大多数时候我遇到这样的错误是因为“禁止”的 XML 字符,请在此处查看:***.com/questions/730133/invalid-characters-in-xml “技术上无效”是什么意思?没有<?xml 序言本身不足以使其无效。您正在解析的文档的确切问题是什么?您能否展示一些文档或错误消息的示例? 该文档不包含 【参考方案1】:

你可以试试这个

<?php
//invalid xml file
$xmlfile = 'test.xml';
$xmlparser = xml_parser_create();

// open a file and read data
$fp = fopen($xmlfile, 'r');
$xmldata = fread($fp, 4096);

xml_parse_into_struct($xmlparser,$xmldata,$values);

xml_parser_free($xmlparser);
print_r($values);
?>

【讨论】:

【参考方案2】:

您可以使用SimpleXML 并使用libxml_use_internal_errors(false); 禁用错误。如果 SimpleXML 根本不会使用您的字符串,我之前曾亲自使用 DOM 来解析/修复损坏的 XML。

另一方面,为什么不在阅读之前简单地添加&lt;?xml 字符?

【讨论】:

这就是我的想法,但不确定这是否是最好的方法。我也尝试使用 DOM,但无法让它工作

以上是关于无效格式xml的最佳PHP解析器[重复]的主要内容,如果未能解决你的问题,请参考以下文章

带有curl的php解析器xml,仅显示我想要的标签[重复]

是否有用于 PHP 的宽松、宽松的 XML 解析器?

Android:解析 XML 数据的最佳解析器 [关闭]

如何使用 PHP 跳过 XML 文件中的无效字符

PHP:JSON 或 XML 解析器更快吗?

wikicfp.xml解析器python 3