У меня есть два XML-дерева, и я хочу добавить одно дерево в качестве листа к другому.
Очевидно:
$tree2->addChild('leaf', $tree1);
не работает, так как копирует только первый корневой узел.
Хорошо, тогда я подумал, что обойду все первое дерево, добавляя каждый элемент один за другим ко второму.
Но рассмотрим XML так:
<root>
aaa
<bbb/>
ccc
</root>
Как мне получить доступ к «ccc»? tree1-> children ()
возвращает только «bbb» ....
Вы не можете добавить «дерево» напрямую с помощью SimpleXML, как вы видели. Однако вы можете использовать некоторые методы DOM, которые сделают за вас тяжелую работу, продолжая работать с тем же базовым XML.
$xmldict = new SimpleXMLElement('<dictionary><a/><b/><c/></dictionary>');
$kitty = new SimpleXMLElement('<cat><sound>meow</sound><texture>fuzzy</texture></cat>');
// Create new DOMElements from the two SimpleXMLElements
$domdict = dom_import_simplexml($xmldict->c);
$domcat = dom_import_simplexml($kitty);
// Import the <cat> into the dictionary document
$domcat = $domdict->ownerDocument->importNode($domcat, TRUE);
// Append the <cat> to <c> in the dictionary
$domdict->appendChild($domcat);
// We can still use SimpleXML! (meow)
echo $xmldict->c->cat->sound;