PHP 7.1 XML узел клона domDocument с подузлами

Я должен решить эту проблему с PHP и DomDocument (также симплекс XML может быть в порядке).
Я много гуглил, но не нашел подходящего примера, чтобы узнать, как это сделать:

У меня есть следующий eBay XML

<?xml version="1.0" encoding="utf-8"?>
<ReviseInventoryStatusRequest xmlns="urn:ebay:apis:eBLBaseComponents">
<RequesterCredentials>
<eBayAuthToken>INSERT_TOKEN</eBayAuthToken>
</RequesterCredentials>
<InventoryStatus>
<ItemID> ItemIDType (string) </ItemID>
<Quantity> int </Quantity>
<SKU> SKUType (string) </SKU>
<StartPrice> AmountType (double) </StartPrice>
</InventoryStatus>
<ErrorLanguage>en-US</ErrorLanguage>
<Version> string </Version>
<WarningLevel>Low</WarningLevel>
</ReviseInventoryStatusRequest>

и мне нужно клонировать (на самом деле 4 раза) <InventoryStatus> Узел со всеми его подузлами:

  <InventoryStatus>
<ItemID> ItemIDType (string) </ItemID>
<Quantity> int </Quantity>
<SKU> SKUType (string) </SKU>
<StartPrice> AmountType (double) </StartPrice>
</InventoryStatus>

и добавить только под текущим узлом

Может пожалуйста дать несколько советов

Спасибо!

0

Решение

DOMDocument намного лучше справляется с такими вещами и может просто клонировать узлы с помощью cloneNode(), проходя true делает глубокий клон, который также будет копировать контент. Затем вы можете добавить узел обратно туда, где он вам нужен …

$dom = new DOMDocument();
$dom->load("data.xml");

$is = $dom->getElementsByTagName("InventoryStatus");
$dom->documentElement->appendChild($is[0]->cloneNode(true));
$dom->documentElement->appendChild($is[0]->cloneNode(true));
$dom->documentElement->appendChild($is[0]->cloneNode(true));
$dom->documentElement->appendChild($is[0]->cloneNode(true));
echo $dom->saveXML();
1

Другие решения

Других решений пока нет …