2013-12-13 88 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