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