2013-12-13 133 views
0

對於XML來說是新的,所以需要一些關於XML的幫助。下面是XML文件,需要將數據追加到現有的XML文件中。 如果是新節點需要添加到已存在的XML文件而不丟失數據,並且如果是新數據庫節點需要將新數據庫節點添加到現有文檔中。XML將數據追加到現有文件中的c#

<?xml version="1.0" encoding="ISO-8859-1"?> 
<servers> 
    <server serverid="server1" name="test" address="test"> 
    <port asset="test" portid ="port1" portname="test" stopReq="N" serverid="server1" name="test" url="test"></port>  
    </server> 

    <server serverid="server2" name="test" address="test"> 
    <port asset="test" portid ="test" portname="test" stopReq="N" serverid="server2" name="test" url="test"></port> 
    </server> 

    <server serverid="server5" name="test" address="test"> 
    <port asset="test" portid ="port31" portname="test" stopReq="Y" serverid="server5" name="test" url="test"></port> 
    <port asset="test" portid ="port110" portname="test" stopReq="Y" serverid="server5" name="test" url="test"></port> 
    <port asset="DART" portid ="port111" portname="test" stopReq="Y" serverid="server5" name="test" url="test"></port> 
    </server> 


<database dbname="test" server="test" UID="test" PWD="test" dbType="test" name="test"></database> 
<database dbname="test" server="test" UID="test" PWD="test" dbType="test" name="test"></database> 


</servers> 
+2

好了 - 這樣使用LINQ to XML應該不會太難。加載文檔,插入相關節點,再次保存。哪一位會導致問題,以及您的代碼到目前爲止的樣子? –

回答

3

您可以使用LINQ to XML。將元素添加到根元素將會將其追加到所有子元素的末尾。例如。添加新的數據庫:

var xdoc = XDocument.Load(path_to_xml); 
var database = new XElement("database", 
       new XAttribute("dbname", "test"), 
       new XAttribute("server", "test"), 
       new XAttribute("UID", "test")); // etc 
xdoc.Root.Add(database); 
xdoc.Save(path_to_xml); 

添加服務器元素更加棘手,因爲它應該最後一個現有的服務器後加入,或作爲根的第一個孩子,如果沒有其他服務器有:

var server = new XElement("server", 
       new XAttribute("serverid", "server6"), 
       new XAttribute("name", "test"), 
       new XElement("port", 
        new XAttribute("asset", "test"), 
        new XAttribute("portid", "port42"))); 

var lastServer = xdoc.Root.Elements("server").LastOrDefault(); 
if (lastServer != null) 
    lastServer.AddAfterSelf(server); 
else 
    xdoc.Root.AddFirst(server); 
+1

感謝您的解決方案,我會嘗試這 – Lalita

+0

@ user1676709我添加了LINQ to XML教程的鏈接。您應該對此技術進行調查 –

+0

您的解決方案適用於我。謝謝了很多..... – Lalita