使用phpQuery删除空XML元素

时间:2013-04-16 08:47:18

标签: php xml phpquery

正如标题中所提到的,我想从XML文档中删除所有空元素。

为空我指的是在其中或其子节点中没有任何 text 节点的元素。

可以用phpQuery做到吗?

1 个答案:

答案 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的引用。