>  기사  >  백엔드 개발  >  SimpleXML 및 DOMDocument를 사용하여 XPath 노드를 어떻게 삭제할 수 있습니까?

SimpleXML 및 DOMDocument를 사용하여 XPath 노드를 어떻게 삭제할 수 있습니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-26 21:25:29357검색

How Can I Delete an XPath Node Using SimpleXML and DOMDocument?

SimpleXML: XPath 노드 삭제

이 기사에서는 다음을 사용하여 XML 문서에서 상위 노드를 효과적으로 삭제하는 방법을 살펴보겠습니다. SimpleXML 및 XPath.

SimpleXML의 제한 이해

제공된 코드는 XPath를 통해 상위 노드를 찾은 후 SimpleXML을 사용하여 상위 노드를 삭제하려고 시도합니다. 그러나 SimpleXML의 unset() 함수는 노드 자체가 아닌 변수에 저장된 객체 참조만 제거합니다.

DOMDocument to the Rescue

SimpleXML의 한계를 극복하려면 다음을 고려하십시오. XML 문서의 구조를 보다 직접적으로 조작하는 DOMDocument를 사용합니다.

DOMDocument를 사용한 솔루션

  1. DOMDocument 객체를 생성하고 그 안에 XML 파일을 로드합니다.
  2. XPath를 사용하여 대상 노드를 쿼리하고 선택합니다.
  3. $node->parentNode->removeChild($node)를 사용하여 상위 노드를 제거합니다.

예제 코드 및 출력

<code class="php">$doc = new DOMDocument;
$doc->loadXML(...);
$item_id = 456;

$xpath = new DOMXpath($doc);
foreach($xpath->query('//items[info/item_id="' . $item_id . '"]') as $node) {
  $node->parentNode->removeChild($node);
}
echo $doc->saveXML();</code>

이 코드는 item_id가 456인 제품 노드를 사용하면 해당 노드 없이 XML 문서가 수정됩니다.

결론

DOMDocument를 사용하면 직접 제거를 포함하여 XML 문서를 더욱 강력하게 조작할 수 있습니다. 노드의. SimpleXML은 기본 XPath 쿼리에 편리할 수 있지만 DOMDocument는 보다 복잡한 XML 조작 작업에 더 적합한 선택입니다.

위 내용은 SimpleXML 및 DOMDocument를 사용하여 XPath 노드를 어떻게 삭제할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.