将xml元素插入多个节点

时间:2013-06-18 18:51:26

标签: c# .net xml nodes

我有以下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>

每当我找到名为“Uic”的元素时,我需要加载xml doc并添加几个元素。简而言之,如果我发现“Uic”在所有位置添加与UIC相同级别的元素<someElement>my stuff here</someElement>

我用过

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

我使用insertBefore添加我的元素,但我可以将它复制到第一个元素

1 个答案:

答案 0 :(得分:1)

您可以使用接受xpath表达式的XmlNode的SelectNodes()方法。

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