簡體   English   中英

將XML節點和內部節點插入C#中的現有XML文檔

[英]Inserting XML nodes and inner nodes to an existing XML document in C#

目前,我有一個工作的C#程序,其工作方式如下:

  1. 接受帶有值的.xls模板(xls由用戶手動創建)
  2. 將值(匹配字段)保存到數據庫
  3. 將.xls轉換並寫入XML。 請參見下面的示例輸出:

    現有的XML結構

現在,我想做的是:

  1. 讀取現有的xml(創建的xml)
  2. 插入另一組節點和子節點( ReleaseLine和子節點)。 它必須接受多個ReleaseLine。
  3. 保存/創建帶有附加節點的新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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM