Есть ли способ использовать повторяющиеся дочерние элементы в DOMDOCUMENT в PHP? В моем случае информация о биллинге и доставке всегда будет одинаковой. Например:
$fullname = "John Doe"; $xml = new DOMDocument(); $xml_billing = $xml->createElement("Billing"); $xml_shipping = $xml->createElement("Shipping"); $xml_fullname = $xml->createElement("FullName"); $xml_fullname->nodeValue = $fullname; $xml_billing->appendChild($xml_fullname); $xml_shipping->appendChild($xml_fullname);
Однако в этом случае он удаляет элемент из Billing и оставляет его только в Shipping.
Это может быть не очевидно для вас, но если вы добавите один и тот же элемент другому родительскому элементу, он будет перемещен в DOMDocument
.
Это можно легко предотвратить, используя созданный элемент FullName в качестве прототипа и клонировать его для операции добавления:
$xml_billing->appendChild(clone $xml_fullname); $xml_shipping->appendChild(clone $xml_fullname);
Это делает то, что вы пытались достичь, если я правильно прочитал ваш вопрос.
И еще один намек, который я просто вижу: следующие две строки:
$xml_fullname = $xml->createElement("FullName"); $xml_fullname->nodeValue = $fullname;
Вы можете написать как одно:
$xml_fullname = $xml->createElement("FullName", $fullname);
Надеюсь это поможет.