Запись в существующий XML-файл без замены его содержимого (XmlWriter)

1

Я столкнулся с следующей проблемой,

Сначала я пишу в свой XML файл следующим образом:

 XmlTextWriter writer = new XmlTextWriter("course.xml", null);
 writer.Formatting = Formatting.Indented;
 writer.WriteStartDocument();

 writer.WriteStartElement("Course");
 writer.WriteAttributeString("title", "Examle");
 writer.WriteAttributeString("started", "true");

 writer.WriteEndElement();
 writer.WriteEndDocument();
 writer.Close();

И xml-выход, который я получаю:

<?xml version="1.0"?>
<Course title="Example" started="true" />

После этого я хочу записать больше данных в этот XML файл, чтобы снова использовать свой код:

XmlTextWriter writer = new XmlTextWriter("course.xml", null);
writer.Formatting = Formatting.Indented;
writer.WriteStartDocument();

writer.WriteStartElement("Course");
       writer.StartElement("Level");
              writer.StartElement("Module");
              writer.EndElement();
       writer.EndElement();
writer.WriteEndElement();

writer.WriteEndDocument();
writer.Close();

И выход xml:

<?xml version="1.0"?>
<Course>
    <Level>
        <Module>
        </Module>
    </Level>
</Course>

Таким образом, он заменяет мои исходные данные и все атрибуты в теге курса. Поэтому мне нужен способ, когда он не заменяет данные, а вместо этого добавляет его в существующие теги.

Теги:
visual-studio
winforms
xmlwriter

2 ответа

2
Лучший ответ

XML файлы - это только последовательные текстовые файлы. Они не являются базой данных или файлом произвольного доступа. Невозможно просто написать их посредине.

  • 0
    +1. Обратите внимание, что в отличие от форматов CSV (или других строковых форматов) невозможно даже добавить файл XML из-за требования соответствия закрывающих тегов. Можно рассмотреть [фрагменты документа] (www.bing.com/search?q=c%23+xml+document+fragment) - XML без верхнего узла для добавления.
0

Я бы рекомендовал развернуть весь XML-документ в памяти, добавить новые данные, а затем снова записать весь документ.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню