0

我有一个如下所示的 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 中存在的节点以及我需要创建的节点。

谢谢

4

1 回答 1

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

    }
于 2016-09-15T09:47:40.813 回答