XML 문서를 만들 때마다 php에서 DOMdocument 클래스를 사용하고 있습니다.DOM 파일을 사용하여 요소를 XML 파일에 추가 하시겠습니까?
하지만 어떻게 XML 문서를 열고 XML 문서의 기존 요소 다음에 요소를 추가 할 수 있습니까?
매우 큰 XML 문서이므로 가장 효율적인 방법을 고려해 보는 것이 좋습니다.
XML 문서를 만들 때마다 php에서 DOMdocument 클래스를 사용하고 있습니다.DOM 파일을 사용하여 요소를 XML 파일에 추가 하시겠습니까?
하지만 어떻게 XML 문서를 열고 XML 문서의 기존 요소 다음에 요소를 추가 할 수 있습니까?
매우 큰 XML 문서이므로 가장 효율적인 방법을 고려해 보는 것이 좋습니다.
DOM 문서를 사용하는 경우 새 노드를 추가하는 것은 기존 노드에 대한 참조를 가져 와서 자식 노드를 만든 다음 해당 노드에 새 노드를 추가하는 것만 큼 간단합니다. 아래의 XPath를 사용했지만 DOMNode를 반환하는 메서드는 작동해야합니다. 기억해야 할 중요한 부분은 트리의 일부를 가져 왔지만 내부적으로 원래 DOMDocument의 일부라는 점입니다.
$xml = new DomDocument();
$xml->loadXml('<foo><baz><bar>Node Contents</bar></baz></foo>');
//grab a node
$xpath = new DOMXPath($xml);
$results = $xpath->query('/foo/baz');
$baz_node_of_xml = $results->item(0);
//create a new, free standing node
$new_node = $xml->createElement('foobazbar');
//create a new, freestanding text node
$text_node = $xml->createTextNode('The Quick Brown Fox');
//add our text node
$new_node->appendChild($text_node);
//append our new node to the node we pulled out
$baz_node_of_xml->appendChild($new_node);
//output original document. $baz_nod_of_xml is
//still considered part of the original $xml DomDocument
echo $xml->saveXML();
내가 잘못하지 않으면 DOMDocument는 모든 XML을 메모리에로드하려고 시도합니다. 거대하면 효율성을 떨어 뜨리고 PHP 프로세스를 중단시킬 수 있습니다. 나는 한번으로 실행 및 콜백 기반 XML 파서에 DOMDocument를 전환했다, 그래서 당신은에 의해 온라인 온라인 당신의 XML을 읽고 당신이 맞는 볼 태그에 응답 할 수 있습니다 :
이 메서드는 전체 XML DOM 트리를 메모리로 읽습니까? 파일이 매우 큰 이유는 ... – ajsie
DOMDocument가 어떻게 작동하는지 잘 모르겠습니다. 한 손으로, 대부분의 트리 기반 파서는 전체 문서를 메모리로 읽습니다. 반면에 DOMDocument 객체를 print_r 또는 var_dump하려고하면 사용 가능한 모든 노드 중에서 일부만 볼 수 있습니다. 시도 해보고 XMLParser 또는 XMLReader를 조사하지 않는 것이 좋습니다. –