Я вижу, что вы можете создавать xml файлы с помощью XmlDocument или XmlWriter.
Есть ли преимущества использования одного метода над другим?
Я вижу, что вы можете создавать xml файлы с помощью XmlDocument или XmlWriter.
Есть ли преимущества использования одного метода над другим?
XmlWriter
выполняет запись XML-данных на основе потоков. XmlDocument
строит XML-данные в качестве объектной модели в памяти.
Вы используете XmlWriter
, когда вам нужно создавать документы XML, не используя память, пропорциональную размеру документа. Вы используете XmlDocument
, когда вам нужно обрабатывать XML в памяти - когда вы разбираете существующий документ XML в объектной модели или создаете элементы в произвольных местах или обновляете существующий документ или используете XPath для поиска документ. (На самом деле, для последнего случая вы использовали бы XPathDocument
, но в любом случае вы не могли бы использовать XmlWriter
, так как он только для записи.)
Конечно, можно записать XML-данные в поток с помощью XmlDocument
. Но вы на самом деле используете XmlWriter
для этого, потому что это то, что XmlDocument
использует внутренне.
Это будет зависеть от вашего сценария. XmlDocument загружает весь документ в память, а XmlWriter использует поток, поэтому он лучше подходит для работы с большими XML-документами. С другой стороны, XmlDocument может быть проще в использовании.
Если вы поддерживаете .Net Framework 3.5, я бы посоветовал вместо этого работать с XDocument и XElement. Это гораздо более простой и удобный API
XmlDocument хранит данные о дырах в памяти, поэтому он медленный, когда файл большой (500 мб и более), но прост в использовании. XmlWriter записывает в поток напрямую.