使用xpath将多个子节点添加到xml

时间:2016-09-15 08:40:44

标签: c# asp.net xml xpath xdoc

我有一个像下面的xml

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

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

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

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

如果路径存在,那么我必须添加值,否则修改值。

我可以分割路径并循环查找直到存在哪个节点以及我必须添加的内容但我认为可能有更优雅的方式来执行此操作。请帮助我解决此问题的最佳方法?

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

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

由于

1 个答案:

答案 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";
        }

    }