"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > SimpleXML 및 DOMDocument를 사용하여 XPath 노드를 어떻게 삭제할 수 있습니까?

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

2024-11-08에 게시됨
검색:158

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).

예제 코드 및 출력

$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();

이 코드는 item_id가 456인 제품의 노드를 제거하여 해당 노드 없이 수정된 XML 문서를 생성합니다.

결론

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

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3