[英]Add Xelement in existing XDocument in C#
我有帶有詳細信息的 XML。 我想復制整個<Details>
節點並使用完全相同的屬性創建更新的<Details>
節點。
我的 XML 看起來像這樣:
<root>
<Details>
<A.EMPLID>0000177008</A.EMPLID>
<G.LAST_NAME>Huziak-Clark</G.LAST_NAME>
<G.FIRST_NAME>Tracy</G.FIRST_NAME>
</Details>
</root>
我想創建一個這樣的新節點
<root>
<Details>
<A.EMPLID>0000177008</A.EMPLID>
<G.LAST_NAME>Huziak-Clark</G.LAST_NAME>
<G.FIRST_NAME>Tracy</G.FIRST_NAME>
</Details>
<Newdetails>
<Details>
<A.EMPLID>0000177008</A.EMPLID>
<G.LAST_NAME>Huziak-Clark</G.LAST_NAME>
<G.FIRST_NAME>Tracy</G.FIRST_NAME>
</Details>
</Newdetails>
</root>
我已經像這樣使用了XElement
,但它只是在XDocument
添加了<NewDeatils/>
節點,而不是剩余的節點。
foreach(XElement e in XDocument.Descendants("Details"))
{
XDocument.Root.Element.Add("NewDetails",XElement("Deatils");
}
如何選擇整個XElement
並將其附加到<Newdetails>
節點下?
謝謝!
首先,加載文件並獲取名為“Details”的所有Descendants
。
var file = @"XMLFile.xml";
var doc = XDocument.Load(file);
var details = doc.Root.Descendants().Where(x => x.Name == "Details");
這為您提供了Details
節點的集合,在您的示例文件中只有一個。 然后,我迭代通過他們,並為他們每個人創建一個新的XElemen
名為NewDetails
並添加現有元素作為孩子。
請注意,我在循環之前獲取details.Count()
並將其用作限制。 如果您改為使用foreach
,這將變成無限循環,所以要小心。
var count = details.Count();
for (var i = 0; i < count; i++)
{
var newDetails = new XElement("NewDetails");
newDetails.Add(details);
doc.Root.Add(newDetails);
}
保存以確認結果。
var fileNew = @"XMLFile2.xml";
doc.Save(fileNew);
這是添加節點前后的文件:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.