3

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

4

5 回答 5

4

如果可以的话,我会避免使用 SimpleXML。尽管通过避免大量“丑陋”的代码看起来很诱人,但这正是它的名字所暗示的:简单。例如,它不能处理这个:

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

咬紧牙关,转到 DOM 函数。它的力量远远超过了一点点额外的复杂性。如果您完全熟悉 Javascript 中的 DOM 操作,那么您会对这个库感到宾至如归。

于 2008-09-16T01:41:12.587 回答
3

SimpleXML似乎对我来说做得很好。

于 2008-09-16T01:34:42.383 回答
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 以上的文档。

于 2008-09-16T21:55:32.963 回答
1

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

有一个非常棒的 3 部分文章系列,标题为“<a href="http://www.ibm.com/developerworks/xml/library/x-xmlphp1.html" rel="nofollow noreferrer">XML for PHP 开发人员”在 IBM developerWorks。

“使用现在完全符合 W3C 标准的 DOM 进行解析是一个熟悉的选项,并且是您处理复杂但相对较小的文档的选择。SimpleXML 是处理基本且不太大的 XML 文档的方法,而 XMLReader 比 SAX 更简单、更快速,是大型文档的首选流解析器。”</p>

于 2008-09-16T05:03:47.450 回答
0

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

http://www.php.net/simplexml

于 2008-09-16T01:35:12.303 回答