SimpleXML: добавить одно дерево к другому

У меня есть два XML-дерева, и я хочу добавить одно дерево в качестве листа к другому.

Очевидно:

$tree2->addChild('leaf', $tree1);

не работает, так как копирует только первый корневой узел.

Хорошо, тогда я подумал, что обойду все первое дерево, добавляя каждый элемент один за другим ко второму.

Но рассмотрим XML так:

<root>
  aaa
  <bbb/>
  ccc
</root>

Как мне получить доступ к «ccc»? tree1-> children () возвращает только «bbb» ....

11
задан hakre 12 February 2013 в 14:45
поделиться

1 ответ

Вы не можете добавить «дерево» напрямую с помощью 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;
26
ответ дан 3 December 2019 в 01:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: