-3

如标题中所述,我想从 XML 文档中删除所有空元素。

我的意思是元素中没有任何文本节点或其子节点。

是否可以使用 phpQuery 做到这一点?

4

1 回答 1

1

我在本主题的答案中使用了 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' 的引用上工作了。

于 2013-04-16T11:16:50.610 回答