如标题中所述,我想从 XML 文档中删除所有空元素。
空我的意思是元素中没有任何文本节点或其子节点。
是否可以使用 phpQuery 做到这一点?
我在本主题的答案中使用了 Gordon 的代码:Reg expression to remove empty Tags (any them)?
首先,我试图将他的 XPath 查询放入phpQueryObject::find()
方法中,但它给了我一个警告,说它是不正确的查询。不知道为什么,因为它正在使用DOMXPath
并且应该可以工作。
无论如何,解决方案仍然很简单。
$pqDoc = phpquery::newDocument() // phpQueryObject created some way. Doesn't matter here.
$xp = new DOMXPath($pqDoc->getDOMDocument());
foreach($xp->query('//*[not(node()) or normalize-space() = ""]') as $node) {
$node->parentNode->removeChild($node);
}
现在您已经删除了空元素,并且您仍然可以使用您的更改phpQueryObject
,因为它实际上已经在DOMDocument
' 的引用上工作了。