질문:
SimpleXML에서 다음과 연결된 상위 노드를 어떻게 삭제할 수 있습니까? XPath를 통해 식별된 특정 요소?
문제 설명:
다음 코드를 사용하여 특정 item_id가 있는 항목을 찾아서 제거하는 데 실패합니다.
<code class="php">$xml = simplexml_load_file($filename); $data = $xml->xpath('//items/info[item_id="' . $item_id . '"]'); $parent = $data[0]->xpath("parent::*"); unset($parent);</code>
unset($parent) 문은 상위
답변:
객체 변수(이 경우 $parent)에 대해 unset()을 직접 호출하면 노드 자체가 아닌 객체 참조만 제거됩니다.
DOMDocument를 사용한 솔루션:
<code class="php">$doc = new DOMDOcument; $doc->loadxml(...XML string...); $item_id = 456; $xpath = new DOMXPath($doc); foreach($xpath->query('//items[info/item_id="' . $item_id . '"]') as $node) { $node->parentNode->removeChild($node); }</code>
이 루프는
출력:
<code class="xml"><?xml version="1.0"?> <foo> <items> <info> <item_id>123</item_id> </info> </items> <items> <info> <item_id>789</item_id> </info> </items> </foo></code>
위 내용은 XPath를 사용하여 SimpleXML에서 상위 노드를 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!