Bir XML dosyasındaki öğeleri eklemek için DOMDocument kullanabilir?

2 Cevap php

I bir XML belgesi oluşturmak için istediğiniz zaman ben php DOMDocument sınıfını kullanıyorum.

ama nasıl bir XML belgesini açın ve XML belgesindeki varolan bir öğenin sonra öğeleri ekleyebilirim?

onun çok büyük bir XML belge yüzden bunu yapmak için en verimli şekilde dikkate harika olurdu.

2 Cevap

Eğer DomDocument ile yapışmasını iseniz, yeni bir düğüm ekleme, varolan bir düğüm için bir başvuru alma çocuk düğümleri oluşturmak ve daha sonra bu çocuklara yeni düğümler ekleme kadar basittir. Aşağıda XPath kullandım, ama bir DOMNode döndüren herhangi bir yöntem çalışması gerekir. Hatırlanması gereken önemli bir parçası dahili orijinal DOMDocument parçası, sen ağacın bir kısmını alıp olsanız bile olsa.

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

Yanılmıyorsam eğer, DOMDocument belleğe XML tüm yüklemeye çalışır. Bu çok büyük ise, verimlilik öldürmek ve PHP süreci aşağı sürebilir. Bir keresinde bu koştu ve geri tabanlı XML Ayrıştırıcı, için DOMDocument geçmek zorunda, böylece XML line-by-line okumak ve uygun gördüğünüz gibi etiketleri yanıt verebilir:

http://www.php.net/manual/en/book.xml.php