>  기사  >  백엔드 개발  >  PHP에서 XPath 및 SimpleXML을 사용하여 상위 노드를 효과적으로 제거하는 방법은 무엇입니까?

PHP에서 XPath 및 SimpleXML을 사용하여 상위 노드를 효과적으로 제거하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-10-26 02:22:02976검색

How to Effectively Remove a Parent Node Using XPath and SimpleXML in PHP?

SimpleXML을 사용하여 XPath 노드를 제거하는 방법

SimpleXML은 XML 작업을 단순화하는 PHP 확장입니다. 그러나 XPath 쿼리를 사용하여 상위 노드를 제거하는 것은 혼란스러울 수 있습니다.

주어진 예에서 코드는 XPath를 사용하여 해당 ID를 사용하여 특정 항목을 찾고 해당 상위 노드의 설정을 해제하려고 시도합니다. 그러나 이 접근 방식은 실제로 상위 노드를 제거하지 않습니다.

노드를 효과적으로 제거하려면 다음 단계를 사용할 수 있습니다.

  1. XML 문자열에서 새 SimpleXMLElement 객체를 생성합니다. .
  2. 예제와 같이 XPath를 사용하여 대상 노드를 찾습니다.
  3. 객체 참조에서 unset() 메서드를 사용하여 제거합니다.

수정된 코드는 다음과 같습니다.

<code class="php">$xml = new SimpleXMLElement($xmlString);
$data = $xml->xpath('//items/info[item_id="' . $item_id . '"]');
unset($data[0]);</code>

DOMDocument를 사용한 대체 접근 방식

또는 DOMDocument 클래스를 사용하여 XML 조작을 추가로 제어할 수 있습니다. 예는 다음과 같습니다.

<code class="php">$doc = new DOMDocument();
$doc->loadXML($xmlString);
$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>

이 방법은 지정된 항목 ID에 대한 전체 항목 노드를 제거합니다.

위 내용은 PHP에서 XPath 및 SimpleXML을 사용하여 상위 노드를 효과적으로 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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