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와에
:
//svg[not(.//path)]
path
후손없이 모든 svg
요소를 얻을 것이다 :
$("g > svg > g:not(path)").remove();
당신이 XPath 식을 사용할 수 있습니다.
또한
//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 @ 최대 머리
이를 위해 괜찮은 자바 스크립트 답변 인 것처럼 보이지만 조심해야합니다. 이것은 asker에게 도움이되지 않을 것입니다. 그들은 PHP로 질문에 태그를 붙 였으므로 PHP에서이를 수행 할 방법을 찾고 있습니다. –