[英]XML insert new child for parent with PHP DOMDocument
如何使用PHP的DOMDocument
或DOMDocumentFragment
將文件追加到具有如下結構的XML文件中。
<root>
<level name="menu1">
<level name="menu1.1"><content name="menu1.1" /></level>
<level name="menu1.2"><content name="menu1.2" /></level>
<level name="sub-menu1">
<level name="sub-menu1.1"><content name="sub-menu1.2"/></level>
</level>
</level>
<level name="menu2"> <!-- Omitted -->
</level>
</root>
我要向父<level name="menu1">
追加一個新的子級,如下所示: <level name="menu1">
。
<level name="menu1.3"><content name="menu1.3" /></level>
到目前為止,我已經能夠使用以下方法完全構造孩子:
$new_dom = new DOMDocument;
$new_level_node = $new_dom->createElement('level');
$new_level_node->setAttribute('name','menu1.3');
$new_content_node = $new_dom->createElement('content');
$new_content_node->setAttribute('name','menu1.3');
$new_level_node->appendChild($new_content_node);
但是,現在如何將$new_level_node
添加到上面的主XML
。
對於主要的XML,我已使用以下命令將其讀入內存:
$doc = new DOMDocument;
$doc->loadxml( $main_xml );
恕我直言,文檔非常清楚,但是,如果您是新手,則需要一些耐心和耐心。 這些屬性對於優秀的程序員(以及想要成為一名程序員的人)至關重要。 不要總是責怪文檔 !
但是,我舉一個例子:
$doc = new DOMDocument;
$doc->preserveWhiteSpace = false;
// Prettify saveXML()
$doc->formatOutput = true;
$doc->load('main.xml');
// Create the child. You don't need to create a new DOMDocument for that
$new_level_node = $doc->createElement('level');
$new_level_node->setAttribute('name','menu1.3');
$new_content_node = $doc->createElement('content');
$new_content_node->setAttribute('name','menu1.3');
$new_level_node->appendChild($new_content_node);
// Now we need to select the menu1 node, in order to call
// appendChild on it. I suggest to use XPath for that.
$xpath_selector = new DOMXPath($doc);
$menu1 = $xpath_selector
->query('//level[@name="menu1"]')
->item(0);
// Append the new node now
$menu1->appendChild($new_level_node);
// Output the modified document
echo $doc->saveXML();
讓我補充一點,當我那時開始學習XML時,對我來說一分鍾內並不是所有事情都變得如此清晰。 除非我能流利地花了一段時間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.