私はDOM(構造体)を持っています。ブランチPHP以外のすべてのDOM子を削除します
<g>
<svg>
<g><path/></g>
<g><circle/></g>
</svg>
</g>
は私がいないpath
要素を持っているすべてのSVG子供を削除する必要があります。 jQueryので
私はDOM(構造体)を持っています。ブランチPHP以外のすべてのDOM子を削除します
<g>
<svg>
<g><path/></g>
<g><circle/></g>
</svg>
</g>
は私がいないpath
要素を持っているすべてのSVG子供を削除する必要があります。 jQueryので
:
$("g > svg > g:not(path)").remove();
あなたはこのXPath式を使用することができます
//svg[not(.//path)]
path
子孫なく、すべてのsvg
の要素を取得します。
また
//svg/*[not(.//path)]
がpath
ではないsvg
要素の唯一の実際の子供を取得するために使用することができます。その後
、ちょうど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 @感謝をアップ
これをJavaScriptの解答はきれいですが、注意してください。これは尋問者を助けることはありません(これはおそらくそれがダウン投票された理由です)。彼らはPHPで質問にタグ付けしているので、PHPでこれを達成する方法を探しています。 –