XML 中的空白是 TextNodes,例如
<foo>
<bar>baz</bar>
</foo>
是真的
<foo><- whitespace node
-><bar>baz</bar><- whitespace node
-></foo>
如果你删除<bar>节点,你会得到
<foo><- whitespace node
-><- whitespace node
-></foo>
我认为 SimpleXml 不允许您轻松访问 Text 节点(可能通过 XPath),但 DOM 可以。有关详细信息,请参阅Wrikken 的答案。既然知道了空格是一个节点,那么你也可以想象将它解析成一个节点会占用一些 cpu 周期。但是,我想说速度影响可以忽略不计。如有疑问,请使用一些真实世界的数据进行基准测试。
编辑:证明空白确实是节点
$xml = <<< XML
<foo>
<bar>baz</bar>
</foo>
XML;
$dom = new DOMDocument;
$dom->loadXML($xml);
foreach($dom->documentElement->childNodes as $node) {
var_dump($node);
}
给
object(DOMText)#4 (0) {}
object(DOMElement)#6 (0) {}
object(DOMText)#4 (0) {}