簡體   English   中英

此PHP DOM代碼有什么問題?

[英]What's wrong with this PHP DOM code?

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

引發異常是因為您嘗試將一個文檔中的節點附加到另一個文檔中。 DOM API不支持。

編輯:唯一理智的解決方法是深度復制元素。 根據類型是否為復雜的XML結構,將類型節點序列化為XML字符串,然后為接收的DOMDocument對象創建DOMDocumentFragment並將原始XML加載到此DOMDocumentFramgnent中可能要容易得多。 然后,您可以像添加DOMElement一樣添加DOMDocumentFragment來插入類型XML數據。

正如jswolf19所指出的,您不能在文檔中附加來自其他文檔的節點:

DOM_WRONG_DOCUMENT_ERR

如果newnode是從與創建該節點的文檔不同的文檔創建的,則引發。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM