Hi people,
Another moment of frustruation which I hope this community can help with. I am working with an XML document that looks something like this.
<site>
<pages>
<page parent="" order="1" name="Home" permalink="/" path="" />
<page parent="" order="2" name="About" permalink="/about-us/" path="" />
<page parent="About" order="3" name="The Team" permalink="/about-us/the-team/" path="" />
<page parent="About" order="1" name="Mission Stement" permalink="/about-us/xxx/" path="" />
<page parent="Mission Stement" order="2" name="Third Level Tier" permalink="/about-us/yyy/sss/" path="" />
<page parent="About" order="2" name="Test" permalink="/about-us/yyy/" path="" />
<page parent="About" order="1" name="ZZZZZZ" permalink="/about-us/xxx/" path="" />
<page parent="" order="1" name="Services" permalink="/services/" path="" />
</pages>
</site>
I need to add an XML node to a specific location. Here is an example if I create a new page and set its parent to be “About” ideally I would want it to appear underneath the xml node with the name=“About”. I can select the parent node the issue I have is appending my new node directly underneath. Here is my example code:
$xmlDoc = new DOMDocument();
$xmlDoc->load($doc);
$xpath = new DOMXPath($xmlDoc);
// Create New Tag
$newPage = $xmlDoc->createElement('page');
$newPage->setAttribute("parent", $parent);
$newPage->setAttribute("order", $xmlOptions['order']);
$newPage->setAttribute("name", $xmlOptions['name']);
$newPage->setAttribute("permalink", $xmlOptions['permalink']);
$newPage->setAttribute("path", $xmlOptions['path']);
$query = "//site/pages/page[@name='About']";
$pages = $xpath->query($query);
$XMLparent = $pages->item(0);
$XMLparent->appendChild($newPage);
echo $xmlDoc->saveXML();
Any Ideas Folks? I will love you forever