Вопрос по php, xml – Как я могу легко объединить два документа XML с одним и тем же родительским узлом в один документ?

3

Я решил, что нет способа сделать это с помощью SimpleXMLElements. Я читал руководство по PHP DOMDocument и думаю, что смогу сделать это с помощью итераций, но это кажется неэффективным. Есть ли лучший способ, который мне не подходит?

Итеративное решение Psuedocode:

// two DOMDocuments with same root element
$parent = new ...
$otherParent = new ...

$children = $parent->getElementByTagName('child');
foreach ($children as $child) {
   $otherParent->appendChild($child);
}

Для ясности у меня есть два XML-документа, которые выглядят так:

    <parent>
      <child>
        <childOfChild>
           {etc, more levels of nested XML trees possible}
        </childOfChild>
      </child>
      <child>
        <childOfChild>
           {etc, more levels possible}
        </childOfChild>
      </child>

</parent>

И я хотел бы вывод, как это:

<parent>
  {all children of both original XML docs, order unimportant, that preserves any nested XML trees the children may have}
<parent>

Ваш Ответ

1   ответ
2

<doc1:parent>
    <doc1:children>...</>
    <doc2:children>...</>
</doc1:parent>

$xml1$xml2

$doc1 = dom_import_simplexml($xml1)->ownerDocument;
foreach (dom_import_simplexml($xml2)->childNodes as $child) {
    $child = $doc1->importNode($child, TRUE);
    echo $doc1->saveXML($child), "\n";
    $doc1->documentElement->appendChild($child);
}

$doc1

<?xml version="1.0"?>
<parent>
      <child>
        <childOfChild>
           {etc, more levels of nested XML trees possible}
        </childOfChild>
      </child>
      <child>
        <childOfChild>
           {etc, more levels possible}
        </childOfChild>
      </child>

      <child>
        <childOfChild>
           {etc, more levels of nested XML trees possible}
        </childOfChild>
      </child>
      <child>
        <childOfChild>
           {etc, more levels possible}
        </childOfChild>
      </child>
</parent>

same

Error: User Rate Limit Exceeded Erika E
Error: User Rate Limit Exceeded

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