J'ai un DOM (structure peu importe).Supprimer tous les enfants DOM sauf branche PHP
<g>
<svg>
<g><path/></g>
<g><circle/></g>
</svg>
</g>
Je dois enlever tous les enfants svg qui n'ont pas l'élément path
.
J'ai un DOM (structure peu importe).Supprimer tous les enfants DOM sauf branche PHP
<g>
<svg>
<g><path/></g>
<g><circle/></g>
</svg>
</g>
Je dois enlever tous les enfants svg qui n'ont pas l'élément path
.
En Jquery:
$("g > svg > g:not(path)").remove();
Vous pouvez utiliser cette expression XPath:
//svg[not(.//path)]
qui obtenir tous svg
éléments sans un descendant path
.
Vous pouvez également utiliser
//svg/*[not(.//path)]
pour obtenir seulement les enfants réels de svg
éléments qui ne sont pas path
.
Ensuite, il suffit de supprimer tous les matchs du 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());
modifier changé de avec l'élément de chemin vers sans élément de chemin, merci @ splash58 pour le heads up
Cette semble être une bonne réponse JavaScript, mais faites attention; cela n'aidera pas le demandeur (qui est probablement pourquoi il a été downvoted). Notez qu'ils ont étiqueté la question avec PHP, donc ils cherchent un moyen d'accomplir cela en PHP. –