我喜欢 XMLReader 类,因为它简单快速。但是我更喜欢与 xml_parse 相关的函数,因为它更好地支持错误恢复。如果 XMLReader 类可以像抛出异常那样处理无效实体引用等问题,那就太好了。
如果可以的话,我建议你避免使用SimpleXML。虽然它看起来非常诱人,可以避免很多“丑陋”的代码,但正如其名称所示:“简单”。例如,它无法处理这种情况:
<p>
Here is <strong>a very simple</strong> XML document.
</p>
要涉及it技术,就必须掌握DOM函数。虽然它稍微有点复杂,但其强大的功能远远超过了这点复杂度。如果你对JavaScript中的DOM操作有所了解,那么你将会非常容易上手使用这个库。
SimpleXML 对我来说做得很好。
$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."
使用PHP5解析XML文件时,至少有四种选项。最佳选择取决于XML文件的复杂程度和大小。
IBM developerWorks有一套非常不错的三部分文章系列,标题为“XML for PHP developers”。
“使用DOM解析器解析XML,现在已经完全符合W3C标准,这是常见的选择,并且适用于复杂但相对较小的文档。SimpleXML适用于基本且不太大的XML文档,而XMLReader比SAX更易于操作和更快速,是处理大型文档的首选流解析器。”
$xml->p
返回的值是"Here is XML document"
。children()
函数只返回<strong>
元素,而不是文本节点,如果要构建上述文档,就必须切换到 DOM 函数。 - nickf