2013-06-18 53 views
0

我有以下XML插入XML元素分成多個節點

<ROOT> 
    <FSM338_Container> 
    <FSM338_Details> 
     <RunDate>2013-05-29 09:43:00</RunDate> 
     <Uic>21690</Uic> 
     <Date>2013-06-10 00:00:00</Date> 
     <CASHBREAK>199</CASHBREAK> 
     <CASHLUNCH>199</CASHLUNCH> 
    </FSM338_Details> 
    <FSM338_Details> 
     <RunDate>2013-05-29 09:43:00</RunDate> 
     <Uic>21690</Uic> 
     <Date>2013-06-10 00:00:00</Date> 
     <CASHBREAK>199</CASHBREAK> 
     <CASHLUNCH>199</CASHLUNCH> 
    </FSM338_Details> 
    </FSM338_Container> 
    <BillingReport> 
    <RunDate>2013-05-29 09:43:00</RunDate> 
    <Uic>21690</Uic> 
    <Date>2013-06-10 00:00:00</Date> 
    <gaindacd>1</gaindacd> 
    <docnum>07000F</docnum> 
    </BillingReport> 
    <DataElements> 
    <unitid>12345</unitid> 
    <fbocost>0.00</fbo> 
    </DataElements> 
</ROOT> 

我需要加載XML文檔,並添加幾種元素每當我找到一個名爲「UIC」的元素。總之,如果我發現「Uic」在所有位置與UIC相同的級別添加元素<someElement>my stuff here</someElement>

我用

XmlDocument xDoc = new XmlDocument(); 
xDoc.Load(@"path_to_xml.xml"); 
list = xDoc.GetElementsByTagName("Uic"); 

我用的insertBefore在我的元素加入,但我可以把它複製到只有第一個元素

+0

您能夠使用LINQ to XML而不是XmlDocument嗎?這會讓它變得更容易。 –

+1

您的Xml格式不正確。 – Romoku

回答

1

可以使用的SelectNodes()XmlNode的方法,它接受xpath表達式。

XmlNodeList nodes = xDoc.DocumentElement.SelectNodes("Uic"); 
foreach(XmlNode node in nodes) { 
    XmlElement element = xDoc.CreateElement("SomeElement"); 
    element.InnerText = "anything"; 
    node.ParentNode.AppendChild(element); 
} 
+0

像冠軍一樣工作......謝謝 – yoJordan