2013-05-29 83 views
4

我有一個元素名稱爲「Dispute」,並且想要在元素下添加新的元素名稱「Records」。如何使用xml在現有元素下添加新元素文檔

Eg: The current Xml is in this format 
<NonFuel> 
      <Desc>Non-Fuel</Desc> 
      <Description> 
      </Description> 
      <Quantity/> 
      <Amount/> 
      <Additional/> 
     <Dispute>0</Dispute> 
</NonFuel> 

需要添加有爭議的新元素。

<NonFuel> 
      <Desc>Non-Fuel</Desc> 
      <Description> 
      </Description> 
      <Quantity/> 
      <Amount/> 
      <Additional/> 
      <Dispute>0</Dispute> 
      <Records>01920</Records> 
    </NonFuel> 

更新的代碼: 試着做下面的代碼,但得到的錯誤「參考節點不是此節點的子」:

XmlDocument xmlDoc=new XmlDocument() 
xmlDoc.LoadXml(recordDetails); 
XmlNodeList disputes = xmlDoc.GetElementsByTagName(disputeTagName); 
XmlNode root = xmlDoc.DocumentElement; 
foreach (XmlNode disputeTag in disputes) 
    { 
    XmlElement xmlRecordNo = xmlDoc.CreateElement("RecordNo"); 
    xmlRecordNo.InnerText = Guid.NewGuid().ToString(); 
    root.InsertAfter(xmlRecordNo, disputeTag); 
    } 
+0

你嘗試過什麼嗎?如果是,請顯示該代碼並告訴我們您的問題。如果不是:爲什麼不呢? –

+0

請顯示更多代碼。目前還不清楚「xmlDoc」和「disputeTag」是什麼。 –

回答

8

InsertAfter必須父節點上調用(在你的情況「非燃料」)。

nonFuel.InsertAfter(xmlRecordNo, dispute); 

它可能看起來有點混亂,但它讀取這樣:你問的父節點(非燃料)後,現有的(爭端)添加一個新的節點(xmlRecordNo)。

一個完整的例子是在這裏:

XmlDocument xmlDoc = new XmlDocument(); 
xmlDoc.LoadXml(@"<NonFuel><Desc>Non-Fuel</Desc><Description></Description><Quantity/><Amount/><Additional/><Dispute>0</Dispute></NonFuel>"); 

XmlNode nonFuel = xmlDoc.SelectSingleNode("//NonFuel"); 
XmlNode dispute = xmlDoc.SelectSingleNode("//Dispute"); 


XmlNode xmlRecordNo= xmlDoc.CreateNode(XmlNodeType.Element, "Records", null); 
xmlRecordNo.InnerText = Guid.NewGuid().ToString(); 
nonFuel.InsertAfter(xmlRecordNo, dispute); 
+0

謝謝,更新代碼如下 - XmlNode root = disputeTag.ParentNode; – psobhan

+0

@Paolo如果父標籤目前爲空,這將如何完成?如在,他試圖將記錄標記添加到NonFuel裏面沒有任何其他值? – thnkwthprtls

2
XmlDocument doc = new XmlDocument(); 
doc.Load("input.xml"); 

XmlElement records = doc.CreateElement("Records"); 
records.InnerText = Guid.NewGuid().ToString(); 
doc.DocumentElement.AppendChild(records); 

doc.Save("output.xml"); // if you want to overwrite the input use doc.Save("input.xml"); 
0

使用 '的appendChild' 的方法 - 作爲最後一個元素添加。

+1

這不提供問題的答案。一旦你有足夠的[聲望](http://stackoverflow.com/help/whats-reputation),你就可以[對任何帖子發表評論;](http://stackoverflow.com/help/privileges/comment) ,[提供不需要從OP得到澄清的答案](http://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an-i -DO-代替)。 – mmushtaq

相關問題