2009-08-04 4 views
1

Как добавить еще один элемент/childnode к определенному родительскому узлу в файле XML?Редактирование файла XML?

В частности, новый видеообъект для медиа-узла. Я хочу, чтобы превратить это:

<?xml version="1.0" encoding="utf-8" ?> 
<media> 
    <Video name="Gladiator"> 
     <English>path1</English> 
     <Chinese>path2</Cinese> 
     <French>path3</French> 
    </Video> 
    <Video name="Transformers"> 
     <English>path4</English> 
     <Chinese>path5</Cinese> 
     <French>path6</French> 
    </Video> 
</media> 

в этом:

<?xml version="1.0" encoding="utf-8" ?> 
<media> 
    <Video name="Gladiator"> 
     <English>path1</English> 
     <Chinese>path2</Cinese> 
     <French>path3</French> 
    </Video> 
    <Video name="Transformers"> 
     <English>path4</English> 
     <Chinese>path5</Cinese> 
     <French>path6</French> 
    </Video> 
    <Video name="Terminator"> 
     <English>path7</English> 
     <Chinese>path8</Cinese> 
     <French>path9</French> 
    </Video> 
</media> 

Если я открываю XmlTextWriter, создать новый тег элемента, добавлять атрибуты и конец тег элемента; она удаляет все предыдущие данные в текстовом файле:/

ответ

3

Если вы используете класс XmlTextWriter, вам нужно прочитать свой XML-файл, чтобы получить содержимое перед использованием XmlTextWriter. XmlTextWriter не загружает содержимое вашего xml-файла. Вот почему все ваши предыдущие данные исчезли.

XmlDocument - это самый простой способ добавить новый узел.

XmlDocument xmlDoc = new XmlDocument(); 
xmlDoc.Load(filePath); 

XmlNode node = FindYourNode(xmlDoc); //Method to find the specific node 
node.AppendChild(yourNewXmlNode); 

xmlDoc.Save(filePath); 

Если файл XML мал, класс XmlDocument это прекрасно. Но если вам нужно манипулировать большим XML-файлом, я бы предложил использовать другой класс, потому что XmlDocument может повредить вашу производительность.

В этом случае, я хотел бы использовать комбинацию XmlReader и XmlWriter.

+0

хорошее объяснение, +1 –

+0

Thanx вы помогли мне найти полный ответ: http://www.java2s.com/Code/CSharp/XML/AppendChild.htm –

0

Я хотел бы сделать что-то вдоль этих линий:

mediaElement.AppendChild(xmlDocument.CreateElement("Video")) 

Где MediaElement является ссылкой на < СМИ/> элемента и XMLDOCUMENT имеет тип XmlDocument.

+0

Не знаю, почему TS не знает, почему его попытка удаляет данные из файла, как он должен знать, как создать «mediaElement» в качестве ссылки на тег. поэтому -1 –

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