我有一个DOM(结构无论如何)。
path
我需要删除所有没有ticketBundles/:code/copy
元素的svg子项。
答案 0 :(得分:2)
您可以使用此XPath表达式:
//svg[not(.//path)]
将获得没有svg
后代的所有path
个元素。
您也可以使用
//svg/*[not(.//path)]
仅获取svg
个path
元素的实际子元素。
然后,只需删除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());
编辑从路径元素更改为不带路径元素,感谢@ splash58为抬头
答案 1 :(得分:-2)
在Jquery中:
$("g > svg > g:not(path)").remove();