你用什么XML解析器PHP?

时间:2008-09-16 01:32:02

标签: php xml

我喜欢XMLReader类,因为它的简单性和速度。但我喜欢xml_parse相关函数,因为它更好地允许错误恢复。如果XMLReader类会抛出无效实体引用之类的异常,而不仅仅发出警告,那就太好了。

5 个答案:

答案 0 :(得分:4)

如果可以,我会避免使用SimpleXML。虽然通过避免大量“丑陋”的代码看起来很诱人,但正如其名称所暗示的那样:简单。例如,它无法解决这个问题:

<p>
    Here is <strong>a very simple</strong> XML document.
</p>

咬紧牙关,转到DOM功能。它的力量远远超过了一点点额外的复杂性。如果您对Javascript中的DOM操作非常熟悉,那么您可以在这个库中感受到它。

答案 1 :(得分:3)

SimpleXML似乎为我做好了。

答案 2 :(得分:2)

SimpleXML和DOM无缝地协同工作,因此您可以使用与SimpleXML或DOM交互的相同XML。

例如:

$simplexml = simplexml_load_string("<xml></xml>");
$simplexml->simple = "it is simple.";

$domxml = dom_import_simplexml($simplexml);
$node = $domxml->ownerDocument->createElement("dom", "yes, with DOM too.");
$domxml->ownerDocument->firstChild->appendChild($node);

echo (string)$simplexml->dom;

您将得到结果:

"yes, with DOM too."

因为当你导入对象(无论是simplexml还是dom)时,它通过引用使用相同的下划线PHP对象。

当我试图通过扩展/包装对象来纠正SimpleXML中的一些错误时,我想到了这一点。

有关示例,请参阅http://code.google.com/p/blibrary/source/browse/trunk/classes/bXml.class.inc

这对于小块的XML(-2MB)非常有用,因为DOM / SimpleXML将整个文档拉入内存并带来一些额外的开销(想想x2或x3)。对于大型XML块(+ 2MB),您将需要使用XMLReader / XMLWriter来解析SAX样式,并且内存开销较低。我已经使用XMLReader / XMLWriter成功使用了14MB +文档。

答案 3 :(得分:1)

使用PHP5解析XML文件时至少有四个选项。最佳选择取决于XML文件的复杂性和大小。

在IBM developerWorks上有一篇非常好的由三部分组成的系列文章“XML for PHP developers”。

“解析DOM,现在完全符合W3C标准,是一个熟悉的选项,是您选择复杂但相对较小的文档。 SimpleXML是基本的和不太大的XML文档的方法,而且比SAX更容易和更快的XMLReader是大型文档的首选流解析器。“

答案 4 :(得分:0)

我主要坚持使用SimpleXML,至少每当PHP5可用时。

http://www.php.net/simplexml