2013-08-05 43 views
0

我知道它可以消除使用XPath空的XML標記的標籤(正如在這裏看到 - Remove empty tags from a XML with PHP刪除空的XML標記與PHP,但忽略了與屬性

$xpath = new DOMXPath($doc); 

foreach($xpath->query('//*[not(node())]') as $node) { 
    $node->parentNode->removeChild($node); 
} 

$doc->formatOutput = true; 
echo $doc->savexml(); 

但有可能使用類似的方法仍然刪除空標籤但保留具有屬性的標籤?

例如

<range starts_at="2012-11-22" ends_at="2012-11-26"></range> 

回答

3

嘗試用這個XPath

'//*[not(node()) and not(@*)]' 
+0

真棒作品完美! – Franco

+0

你知道如何僅包含void屬性的節點? – FAjir