2016-03-14 77 views
0

我有一個XML文檔。我想動態地將父節點添加到xml文檔。我該怎麼做。將XML父節點插入到現有的xml文檔中

這裏是我的xml

<navdefinition> 
    <link text="/and" href="/and"> 
     <link text="Overview" href="/overview" /> 
     <link text="Information" href="/fo"/>   
    </link> 
    </navdefinition> 

我試圖節點添加到這上面,這樣一個將成爲新的父,並在頂部

<navdefinition> 
     <link text="NewParent" href="/"> 
     <link text="Sibling" href="/sibling"/> 
     <link text="/and" href="/and"> 
      <link text="Overview" href="/overview" /> 
      <link text="Information" href="/fo"/> 
     </link> 
     </link> 
    </navdefinition> 
+0

我看到你沒有編寫處理輸入XML的實際代碼。現在不要看答案。我相信你自己可以做到這一點。然後看看答案是否可以使用:) –

回答

1

一個兄弟試試這個

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Xml; 
using System.Xml.Linq; 

namespace ConsoleApplication82 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string xml = 
       "<navdefinition>" + 
        "<link text=\"/and\" href=\"/and\">" + 
         "<link text=\"Overview\" href=\"/overview\" />" + 
         "<link text=\"Information\" href=\"/fo\"/>" + 
        "</link>" + 
       "</navdefinition>"; 

      XDocument doc = XDocument.Parse(xml); 

      XElement navDefinition = doc.Element("navdefinition"); 
      navDefinition.FirstNode.ReplaceWith(
       new XElement("link", new object[] { 
        new XAttribute("text", "NewParent"), 
        new XAttribute("href", "/"), 
        new XElement("link", new object[] { 
         new XAttribute("text", "Sibling"), 
         new XAttribute("href", "/sibling"), 
         navDefinition.FirstNode 
        }) 
       }) 
      ); 

     } 

    } 
} 
1

只需創建一個新的父級XElement並設置其子內容:

var xmlDoc = XDocument.Parse(xml); 

var parentElement = new XElement("link", xmlDoc.Root.Elements()); 
parentElement.SetAttributeValue("text", "NewParent"); 
parentElement.SetAttributeValue("href", "/"); 
xmlDoc.Root.ReplaceNodes(parentElement); 
相關問題