如何在PHP中删除空的xml标记?
$value1 = "2"; $value2 = "4"; $value3 = ""; xml = '<parentnode> <tag1> ' .$value1. '</tag1> <tag2> ' .$value2. '</tag2> <tag3> ' .$value3. '</tag3> </parentnode>';
<parentnode> <tag1>2</tag1> <tag2>4</tag2> <tag3></tag3> // <- Empty tag </parentnode>
<parentnode> <tag1>2</tag1> <tag2>4</tag2> </parentnode>
不含空标签(如“ tag3”)的XML
谢谢!
您可以将XPath与谓词 not(node())一起使用,以选择所有没有子节点的元素。
not(node())
<?php $doc = new DOMDocument; $doc->preserveWhiteSpace = false; $doc->loadxml('<parentnode> <tag1>2</tag1> <tag2>4</tag2> <tag3></tag3> <tag2>4</tag2> <tag3></tag3> <tag2>4</tag2> <tag3></tag3> </parentnode>'); $xpath = new DOMXPath($doc); foreach( $xpath->query('//*[not(node())]') as $node ) { $node->parentNode->removeChild($node); } $doc->formatOutput = true; echo $doc->savexml();
版画
<?xml version="1.0"?> <parentnode> <tag1>2</tag1> <tag2>4</tag2> <tag2>4</tag2> <tag2>4</tag2> </parentnode>