2008-11-25 3 views
1

Привет я хочу добавить новый узел в качестве родительского узла старых узлов в XML с помощью C# .for например узел содержит следующие версии файла XMLXML Синтаксический

<bookstore> 
    <books> 
     <author> 
     </author> 
    </books> 
</bookstore> 

как что теперь я хочу добавить новый, как показано ниже

<bookstore> 
<newnode> 
    <books> 
     <author> 
     </author> 
    </books> 
</newnode> 
</bookstore> 

Спасибо заранее Sekar

+0

Какая версия .NET вы с помощью? LINQ to XML обычно приятнее, если у вас есть 3.5 для игры. – 2008-11-25 07:08:56

ответ

0

не имею VS здесь поэтому не может подтвердить, что это работает, но что-то вроде этого:

XmlDocument xd = new XmlDocument(); 
xd.Load("oldxmlfile.xml"); 
XmlNode oldNode = xd["nameOfRootNode"]; 
xd.RemoveAll(); 
XmlNode newParent = xd.CreateNode("nodename"); 
newParent.AppendChild(oldNode); 
xd.AppendChild(newParent); 
xd.Save("newXmlFile.xml"); 
0

Вы можете клонировать старый узел, добавьте клон, и удалить оригинал:

(редактирование; Я забыл, что AppendChild будет переместить узел, если он уже есть ... не нужно клонировать и удалять ...)

XmlDocument doc = new XmlDocument(); 
// load the current xml 
doc.LoadXml(xml); 
// create a new "newnode" node and add it into the tree 
XmlElement newnode = (XmlElement) doc.DocumentElement.AppendChild(doc.CreateElement("newnode")); 
// locate the original "books" node and move it 
newnode.AppendChild(doc.SelectSingleNode("/bookstore/books")); 
// show the result 
Console.WriteLine(doc.OuterXml); 
2

Попробуйте это: -

XmlDocument doc = new XmlDocument(); 
doc.Load("BookStore.xml"); 
XmlElement newNode = doc.CreateElement("newnode"); 
doc.DocumentElement.AppendChild(newNode); 
newNode.AppendChild(doc.SelectSingleNode("/bookstore/books")); 
doc.Save("BookStore.xml"); 
Смежные вопросы