[英]How to add nodes inside an XML with incremented names using C#
下面给出的代码用于通过右键单击WPF应用程序中具有的上下文菜单来调用添加验证的表单。
public void AddValidation(object sender, RoutedEventArgs e)
{
ValidationForm obj = new ValidationForm();
ProcessGrid.Content = obj.VForm;
}
它将打开验证表单。 输入所需的详细信息后,当我单击表单内给定的提交按钮时,它将创建一个如下所示的xml:
<?xml version="1.0" encoding="utf-8"?>
<Processes>
<Process Name="Process1" Namespace="" Methodname="">
<Validations IsSelected="True" />
<validation>xsdPath</validation>
<Validations>
</Process>
</Processes>
如果我将再次添加任何新的验证,那么它将再次以这种方式添加一个节点。
<?xml version="1.0" encoding="utf-8"?>
<Processes>
<Process Name="Process1" Namespace="" Methodname="">
<Validations IsSelected="True" />
<validation>xsdPath</validation>
<validation>xsdPath1</validation>
<Validations>
</Process>
</Processes>
为了创建XML,我使用了以下代码。 字符串MyValue;
MyValue = Pages.ProcessesLayoutList.MyValue;
XDocument doc = XDocument.Load(@"C:\Users\562630\Desktop\New folder\ProcessComplete.xml");
var a = doc.Descendants("Process").Where(x => (string)x.Attribute("Name") == MyValue).
Select(x => x.Element("Validations")).FirstOrDefault();
a.Add(new XElement("Validation", s));
doc.Save(@"C:\Users\562630\Desktop\New folder\ProcessComplete.xml");
但是,我想添加带有诸如此类的增量名称的节点,因此,每次都添加验证节点后,它应该以递增顺序添加验证节点。 请提出一些方法。 提前致谢。
您可以依靠元素Count
来维护新添加元素的值序列,请注意,这种方法仅在同步添加元素时有效。
var count =
doc.Descendants("Validations")
.Elements()
.Count();
// Use count to maintain incremental value for your newly added elements.
doc.Descendants("Validations")
.First()
.Add(new XElement("validation", string.Format("xsdPath{0}", count)));
检查这个Demo
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.