I am trying to add a new node after in designmap.xml
The new node includes an src attribute that is customized by the array below.
$newStories = Array ( [0] => u102 [1] => u103 [2] => u107 [3] => u156 );
$designMap = simplexml_load_file('designmap.xml');
foreach ($newStories as $story) {
$newStoryNode = '<idPkg:Story src="Stories/Story_' . $story . '.xml" />';
$insert = new SimpleXMLElement($newStoryNode);
$target = current($designMap->xpath('//idPkg:Story[last()]'));
simplexml_insert_after($insert, $target);
}
function simplexml_insert_after(SimpleXMLElement $insert, SimpleXMLElement $target)
{
$target_dom = dom_import_simplexml($target);
$insert_dom = $target_dom->ownerDocument->importNode(dom_import_simplexml($insert), true);
if ($target_dom->nextSibling) {
return $target_dom->parentNode->insertBefore($insert_dom, $target_dom->nextSibling);
} else {
return $target_dom->parentNode->appendChild($insert_dom);
}
}
$designMap->asXML('designmap.xml');
I get the following warnings for each of the looks:
- SimpleXMLElement::__construct(): namespace error : Namespace prefix idPkg on Story is not defined
- SimpleXMLElement::__construct(): u102.xml
- SimpleXMLElement::__construct(): ^ in
Not sure you need to embrace the first statement "//idPkg:Story"