[英]Inserting XML nodes and inner nodes to an existing XML document in C#
目前,我有一個工作的C#程序,其工作方式如下:
將.xls轉換並寫入XML。 請參見下面的示例輸出:
現在,我想做的是:
保存/創建帶有附加節點的新xml。 請參見下面的輸出:
我現有的C#程序很簡單,但是XML節點和層次結構很深。 我剛剛使用new XElement
方法並為每個節點傳遞值創建了C#代碼。 然后,我僅使用xmlDocument.Save()
方法編寫xml。
[現有的XML程序] [3]
要在現有的xml數據中添加節點或追加內容,請使用Linq到XML。
XElement xml = XElement.Load("file.xml");
xml.Add( new XElement("uberNode",
new XElement("childNode", content),
new XElement("anotherChildNode", content)));
xml.Save("file.xml");
這里是一些其他相關的解決方案。
添加到特定節點(帶有示例):
在存在XML數據之后:
`<Names>
<Name>
<prename>John</prename>
<lastname>Snow</lastname>
</Name>
<Name>
<prename>Harry</prename>
<lastname>Harry</lastname>
</Name>
</Names>`
現在,我想在第一個“姓氏”標簽之前添加一個“年齡”標簽,並在第一個“姓氏”標簽之后添加一個“家庭”標簽。
XElement xml = XElement.Load("file.xml");
var childrens = xml.DescendantsAndSelf().ToArray();
var first_prename = childrens[2];
var first_lastname = childrens[3];
Console.WriteLine(childrens[0]); //prints out the whole content
first_prename.AddBeforeSelf(new XElement("age", 22));
first_lastname.AddAfterSelf(new XElement("family", new XElement("mother", "paula"), new XElement("father", "paul")));
xml.Save("file.xml");
結果:
`<Names>
<Name>
<age>22</age>
<prename>John</prename>
<lastname>Snow</lastname>
<family>
<mother>paula</mother>
<father>paul</father>
</family>
</Name>
<Name>
<prename>Harry</prename>
<lastname>Harry</lastname>
</Name>
</Names>`
我正面臨這個問題,Linq給了我最簡單的方法來實現這一目標! 還有其他類似的方法,例如這里 。 但是我嘗試了更多,DescendantsAndSelf()使我更容易理解。
我找到了問題的答案,這是鏈接http://www.xmlplease.com/add-xml-linq。使用XPathSelectElement方法,可以找到正確的節點並附加了XElement的新塊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.