簡體   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