添加多个子节点使用XPath

问题描述:

为xml我有一个像下面添加多个子节点使用XPath

<ProcessInvoice> 
    <ApplicationArea> 
    <CreationDateTime>2016-06-01 13:15:36</CreationDateTime> 
    <ApplicationGroup>BBEX</ApplicationGroup> 
    <MessageType>PROCESSINVOICE</MessageType> 
    </ApplicationArea> 
</ProcessInvoice> 

现在我有路径和值添加XML,但它是动态的。 它可以像下面

path-/ProcessInvoice/ApplicationArea/UserArea/Sample1 
value-001 

path-/ProcessInvoice/ApplicationArea/UserArea/UserAreaLine/Sample1 
value-002 

路径是否存在,那么我要补充的价值,否则修改的值。

我可以拆分路径并循环查找,直到找到了什么节点以及我必须添加的内容,但我认为可能有更优雅的方法来实现此目的。请帮助我解决此问题的最佳方法?

编辑 注 - 我更喜欢XDocument和XElement。

可能是我没有正确解释。 我的xml和节点路径都是动态的。 有可能是我的XML中缺少多个节点的情况。 现在的问题是我需要确定哪些节点存在于xml中以及我需要创建哪些节点。

感谢

+0

为每一个“UserArea”或“UserArea/UserAreaLine”只有一个“样本”节点? –

+0

是的,这是真的。现在我们只有一个节点。 –

+0

“Sample1”节点总是存在? –

如果“样本”节点总是存在,代码如下所示:

XmlDocument doc = new XmlDocument(); 
    doc.Load(FILE); 
    var userArea = DocumentElement["ProcessInvoice"]["ApplicationArea"]["UserArea"]; 

    foreach (XmlNode element in userArea.ChildNodes) 
    { 
     if (element.Name== "Sample1") 
     { 
      XmlNode node == element; 
      node.InnerText ="001"; 
     } 
     else if (element.Name == "UserAreaLine") 
     { 
      XmlNode node == element["Sample1"]; 
      node.InnerText ="002"; 
     } 

    }