添加多个子节点使用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中以及我需要创建哪些节点。
感谢
答
如果“样本”节点总是存在,代码如下所示:
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";
}
}
为每一个“UserArea”或“UserArea/UserAreaLine”只有一个“样本”节点? –
是的,这是真的。现在我们只有一个节点。 –
“Sample1”节点总是存在? –