2013-04-16 84 views
-3

正如在標題中提到的,我想從XML文檔中刪除所有空元素。用phpQuery刪除空的XML元素

通過我的意思是元素沒有任何文本節點在它或它的孩子。

是否可以用phpQuery來做到這一點?

+0

這是可能的。你到目前爲止嘗試過哪些代碼? – karmafunk

+0

嘗試使用'filter($ callback)',但實際上沒有它的文檔,我無法瞭解它是如何工作的細節。 –

+0

你需要顯示你的代碼。 – karmafunk

回答

1

我用戈登的代碼的答案在本主題: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的參考工作。