正如标题中所提到的,我想从XML文档中删除所有空元素。
为空我指的是在其中或其子节点中没有任何 text 节点的元素。
可以用phpQuery做到吗?
答案 0 :(得分:1)
我在本主题中使用了Gordon的代码答案:Reg expression to remove empty Tags (any of 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
的引用。