繁体   English   中英

如何使用C#在XML中以递增名称添加节点

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM