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

Смежные вопросы