使用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中,哪些节点我需要创建。
谢谢
如果"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";
}
}