我目前正在處理一個XML請求,並且正在嘗試創建一個在調用中具有多個同名節點的回覆文檔,所以我試圖返回是:向XML文檔追加多個類似的XML節點
<Reply Document>
<ConfirmationItem name = "One">
<ItemDetail />
</ConfirmationItem>
<ConfirmationItem name = "Two">
<ItemDetail />
</ConfirmationItem>
...
<ConfirmationItem name = "Twenty">
<ItemDetail />
</ConfirmationItem>
</Reply Document>
我做了一些研究,發現這個線程:其中XmlReader AppendChild is not appending same child value接受的答案是,OP必須創建新的元素,能夠追加到尾部,而不是覆蓋第一個。
我原來的代碼如下,它創建從傳入請求的XmlNode,並將結果追加到XmlDocument的本身:
//p_transdoc is the XmlDocument that holds all the items to process.
XmlNodeList nodelst_cnfrm = p_transdoc.SelectNodes("//OrderRequest");
foreach (XmlNode node in nodelst_cnfrm)
{
//this is just an XML Object
XmlNode node_cnfrm_itm = this.CreateElement("ConfirmationItem");
node_cnfrm_itm.Attributes.Append(this.CreateAttribute("name")).InnerText = p_transdoc.Attributes["name"].InnerText;
XmlNode node_itmdtl = this.CreateElement("ItemDetail");
node_cnfrm_itm.AppendChild(node_itmdtl);
//xml_doc is the return XML request
xml_doc.AppendChild(node_cnfrm_itm);
}
所以讀取線程和答案後,我試圖改變代碼每次使用新的XmlElement。
//p_transdoc is the XmlDocument that holds all the items to process.
XmlNodeList nodelst_cnfrm = p_transdoc.SelectNodes("//OrderRequest");
foreach (XmlNode node in nodelst_cnfrm)
{
XmlElement node_cnfrm_itm = new XmlElement();
node_cnfrm_itm = this.CreateElement("ConfirmationItem");
node_cnfrm_itm.Attributes.Append(this.CreateAttribute("name")).InnerText = p_transdoc.Attributes["name"].InnerText;
XmlElement node_itmdtl = new XmlElement();
node_itmdtl = this.CreateElement("ItemDetail");
node_cnfrm_itm.AppendChild(node_itmdtl);
//xml_doc is the return XML request
xml_doc.AppendChild(node_cnfrm_itm);
}
但不僅如此,它會返回服務器錯誤。所以我來找你尋求幫助。此時此代碼僅返回一個ConfirmationItem。我如何能夠將ConfirmationItem附加到文檔的末尾而不是覆蓋它,以便能夠返回與發送的數量相同的數量? (我應該指出,爲了便於閱讀,簡化和減少混亂,這些代碼已經被大量格式化,任何印刷錯誤純粹是因爲Asker在有效校對時發生的內部故障)。
什麼樣的對象是 '這個'? – 2011-03-15 14:17:33