使用xpath向xml添加多个子节点

本文关键字:子节点 添加 xml xpath 使用 | 更新日期: 2023-09-27 18:07:02

下面有一个类似

的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中,哪些节点我需要创建。

谢谢

使用xpath向xml添加多个子节点

如果"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";
        }
    }