在DOMDocument中多次追加Element

时间:2013-09-27 13:26:27

标签: php domdocument

有没有办法在PHP中使用DOMDOCUMENT中的重复子元素?就我而言,结算和发货信息将始终相同。例如:

$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);

但是,在这种情况下,它会从“结算”中删除该元素,并仅将其保留在“运输”中。

1 个答案:

答案 0 :(得分:4)

对您来说可能并不明显,但如果您将相同的元素附加到另一个父级,则会在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);

希望这有帮助。