$doc = new DOMDocument();
$doc -> load("state.xml");
...snip...
$neworder = $doc -> createElement("order");
$neworder -> appendChild($type);
最后一行代码导致脚本失败。 500 HTTP响应。如果我发表评论,脚本运行正常。
get_class()确认$ neworder和$ type都是DOMElement类。问题是什么?
...
我正在尝试添加节点的位置:
这是$ type来自的地方。
for ($i = 0; $i < $ordersummary -> length; $i++)
{
$o = $ordersummary -> item($i);
$type = $o -> getElementsByTagName("type") -> item(0);
...
和$ ordersummary就是这样获得的
$ordersummary -> loadXML($_POST["data"]);
$ordersummary = $ordersummary -> getElementsByTagName("order");
答案 0 :(得分:1)
抛出异常是因为您尝试将一个节点中的节点附加到另一个文档中。 DOM API不支持。
编辑:唯一合理的解决方法是深层复制元素。根据类型是否是复杂的XML结构,将类型节点序列化为XML字符串可能要容易得多,然后为接收DOMDocument对象创建DOMDocumentFragment并将原始XML加载到此DOMDocumentFramgnent中。然后,您可以像添加DOMElement一样附加DOMDocumentFragment以插入XML数据类型。
答案 1 :(得分:0)
正如jswolf19指出的那样,你不能在文档中附加来自不同文档的节点:
DOM_WRONG_DOCUMENT_ERR
如果newnode是从与创建此节点的文档不同的文档创建的,则引发。