Редактирование файла XML? - PullRequest
1 голос
/ 05 августа 2009

Как добавить другой элемент / дочерний узел к определенному родительскому узлу в файле 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, создам новый тег элемента, добавим атрибуты и завершим тег элемента; удаляет все предыдущие данные в текстовом файле: /

Ответы [ 2 ]

3 голосов
/ 05 августа 2009

Если вы используете класс 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 голосов
/ 05 августа 2009

Я бы сделал что-то вроде этого:

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

Где mediaElement - это ссылка на элемент , а xmlDocument имеет тип XmlDocument.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...