/**
* Pumps all child elements of second SimpleXML object into first one.
*
* @param object $xml1 SimpleXML object
* @param object $xml2 SimpleXML object
* @return void
*/
function simplexml_merge (SimpleXMLElement &$xml1, SimpleXMLElement $xml2) {
// convert SimpleXML objects into DOM ones
$dom1 = new DomDocument();
$dom2 = new DomDocument();
$dom1->loadXML($xml1->asXML());
$dom2->loadXML($xml2->asXML());
// pull all child elements of second XML
$xpath = new domXPath($dom2);
$xpathQuery = $xpath->query('/AvailableBatch/Available');
for($i = 0; $i < $xpathQuery->length; $i++) {
// and pump them into first one
$dom1->documentElement->appendChild($dom1->importNode($xpathQuery->item($i), true));
} // for($i = 0; $i < $xpathQuery->length; $i++)
$xml1 = simplexml_import_dom($dom1);
} // function simplexml_merge (SimpleXMLElement &$xml1, SimpleXMLElement $xml2)
Usage:
$xmlstr = file_get_contents('stock_001.xml');
$stock_xml = new SimpleXMLElement($xmlstr);
$xmlstr = file_get_contents('stock_002.xml');
$xml_app = new SimpleXMLElement($xmlstr);
simplexml_merge($stock_xml, $xml_app);
file_put_contents("stock.xml", $stock_xml->asXML());