Как обьеденить 2 xml в один с помощью simplexml

fonbaron

Велосипедист
Добрый день
Подскажите как можно засунуть в определенную ноду одного xml другой xml
делал так:
Код:
<?php
$string1 = "<?xml version='1.0'?>
<document xmlns='http://www.w3.org/2005/Atom'>
<title>Forty What?</title>
<from>Joe</from>
<to>Jane</to>
<body>

</body>
</document>";
$string2 = "<param>
<name>Forty What?</name>
<width>Joe</width>
<height>Jane</height>
</param>";

$xml = simplexml_load_string($string1 );
$xml2 = new SimpleXMLElement ($string2 );
foreach ($xml->xpath("//body") as $item) {
            $item[0]=$xml2;
}
echo $xml->asXML();
?>
Но видимо что не так делаю не получается подскажите что не так
 

undertext

Новичок
Только с помощью simplexml не получится.
1) $item[0]=$xml2; не сработает, нельзя xml запихивать.
2) <document xmlns='http://www.w3.org/2005/Atom'>
Здесь неймспейс. Его нужно зарегистрировать, и в xpath обращаться через этот неймспейс.
Код:
$xml->registerXPathNamespace('n', 'http://www.w3.org/2005/Atom');
$xml->xpath("//n:body");
Я бы использовал DOMDocument вместо simplexml, получится такое в итоге
Код:
$xml = new DOMDocument();
$xml->loadXML($string1);
$xpath = new DOMXPath($xml);
$xpath->registerNamespace('n', 'http://www.w3.org/2005/Atom');
foreach ($xpath->query("//n:body") as $item) {
  $child = $xml->createDocumentFragment();
  $child->appendXML($string2);
  $item->appendChild($child);
}
print_r($xml->saveXML());
 
Сверху