XmlDocument vs XmlWriter

Я вижу, что вы можете создавать xml файлы с помощью XmlDocument или XmlWriter.

Есть ли преимущества использования одного метода над другим?

Ответы

Ответ 1

XmlWriter выполняет запись XML-данных на основе потоков. XmlDocument строит XML-данные в качестве объектной модели в памяти.

Вы используете XmlWriter, когда вам нужно создавать документы XML, не используя память, пропорциональную размеру документа. Вы используете XmlDocument, когда вам нужно обрабатывать XML в памяти - когда вы разбираете существующий документ XML в объектной модели или создаете элементы в произвольных местах или обновляете существующий документ или используете XPath для поиска документ. (На самом деле, для последнего случая вы использовали бы XPathDocument, но в любом случае вы не могли бы использовать XmlWriter, так как он только для записи.)

Конечно, можно записать XML-данные в поток с помощью XmlDocument. Но вы на самом деле используете XmlWriter для этого, потому что это то, что XmlDocument использует внутренне.

Ответ 2

Это будет зависеть от вашего сценария. XmlDocument загружает весь документ в память, а XmlWriter использует поток, поэтому он лучше подходит для работы с большими XML-документами. С другой стороны, XmlDocument может быть проще в использовании.

Ответ 3

Если вы поддерживаете .Net Framework 3.5, я бы посоветовал вместо этого работать с XDocument и XElement. Это гораздо более простой и удобный API

Ответ 4

XmlDocument хранит данные о дырах в памяти, поэтому он медленный, когда файл большой (500 мб и более), но прост в использовании. XmlWriter записывает в поток напрямую.