2012-03-08 110 views
3

我搜索了很多地方並看到了很多示例,但我仍無法將節點添加到我想要的地方的XML中。將Xml元素複製到C#中的另一個文檔中#

這裏是我的問題

我有一個XML文件,該文件會被我的程序讀取,使用它作爲我的新的XML文件的模板的目的。但正如我所說,我創建的「XML模板」只有最通用的定義,這意味着我需要讀取該模板的一個特定節點,將其添加到新的XML中,創建新的節點,它們爲新的XML文件

模板XML:

<A> 
    <B> 
    <c>element 1</c> 
    <d>element 2</d> 
    <e>element 3</e> 
    </B> 
    <B> 
    <c>element 4</c> 
    <d>element 5</d> 
    <e>element 6</e> 
    </B> 
</A> 

這裏是新的文件,我需要創建:

<A> 
    <B> 
    <c>element 7</c> 
    <d>element 8</d> 
    <e>element 9</e> 
    <f>element 10</f> 
    <g>element 11</g> 
    </B> 
<B> 
    <c>element 12</c> 
    <d>element 13</d> 
    <e>element 14</e> 
    <f>element 15</f> 
    <g>element 16</g> 
    </B> 
</A> 

正如你可以看到下面

結構
<A> 
    <B> 
    <c>element 7</c> 
    <d>element 8</d> 
    <e>element 9</e> 
    </B> 
</A> 

我需要從我的模板xml複製到我的新xml文件(選擇哪個節點取決於用戶),但該特定節點將被複制到新的xml,然後我需要添加一些節點我已經複製到新文件以使其更加完整的節點。我需要將它們添加到B標籤。

我已經能夠做到這一點,我將需要讓用戶通過添加更多的模板節點並將它們堆疊在A標籤之間來不斷增長新的XML文件。

我已經成功地複製了xml模板節點並將其添加到新文件中,但我無法添加新節點,也沒有能夠保持xml不斷增長,每當我做廣告時B節點到它訂閱之前的A節點。

如果有人知道如何幫助我,我會非常感激,因爲今天是使用XML

+0

目前還不清楚我到底在問什麼。你能告訴我們你的代碼的相關部分,並描述你到底想要做什麼以及它究竟做了什麼? – svick 2012-03-08 02:15:35

回答

2

我建議使用LINQ到XML我覺得它簡單,容易實現我的第一天。 這裏是exampple如何與LINQ讀取XML

XDocument xmlDoc = XDocument.Load(Server.MapPath("XMLFile.xml")); 

    var persons = (from elements in xmlDoc.Descendants("A") 
    where elements.Element("c").Value==//VALUE YOU LOOKING TO GET 
    select new 
    { 
    c = elements.Element("c").Value, 
    d = elements.Element("d").Value, 
    e = elements.Element("e").Value, 
    }).FirstOrDefault(); 
    /// ADD ELEMENT TO ANOTHER XML 

的XDocument xmlDoc中= XDocument.Load(使用Server.Mappath( 「AnotherXMLFile.xml」));

xmlDoc.Element("A").Add(new XElement("B", new XElement("e", persons.e))); 

,這裏是一個很好的教程

http://www.aspnettutorials.com/tutorials/xml/linq-to-xml-adding-cs.aspx