删除分支PHP以外的所有DOM子项

时间:2017-10-09 12:40:08

标签: php xml dom simplexml

我有一个DOM(结构无论如何)。

path

我需要删除所有没有ticketBundles/:code/copy元素的svg子项。

2 个答案:

答案 0 :(得分:2)

您可以使用此XPath表达式:

//svg[not(.//path)]

将获得没有svg后代的所有path个元素。

您也可以使用

//svg/*[not(.//path)]

仅获取svgpath元素的实际子元素。

然后,只需删除XML中的所有匹配项:

$dom = new DOMDocument();
$dom->loadXML($doc);
$x = new DOMXPath($dom);
$toDelete = $x->query("//svg[not(.//path)]");
foreach ($toDelete as $child) {
    $child->parentNode->removeChild($child);
}
var_dump($dom->saveXML());

Demo

编辑从路径元素更改为不带路径元素,感谢@ splash58为抬头

答案 1 :(得分:-2)

在Jquery中:

$("g > svg > g:not(path)").remove();

相关问题