XML-сериализация или чтение из XML-объектов? - PullRequest
1 голос
/ 19 апреля 2011

У меня есть разные XML-файлы, которые мне нужно будет прочитать. Мне интересно, стоит ли десериализовать файлы в пользовательские объекты или просто прочитать данные, используя XDocument объекты и Linq-to-XML.

Размер файлов варьируется от 1-2 КБ до 3 МБ +, а различные объекты также различаются по сложности (некоторые имеют атрибуты, некоторые имеют дочерние элементы, некоторые оба, некоторые нет).

Я полагаю, что было бы легче работать с объектами, чем с Linq-to-XML, но создание этих объектов потребовало бы некоторого времени заранее. Существуют ли практические правила или предложения относительно того, когда десериализовать, в отличие от Linq?

Спасибо за любую помощь!

Ответы [ 2 ]

2 голосов
/ 19 апреля 2011

Это действительно зависит от того, что вы делаете с данными.Если вы не используете всю информацию, предоставляемую документом XML, то подход, основанный на LINQ, вероятно, самый простой.Подумайте о том, чтобы взять RSS-ленту, и только отслеживать даты статьи, и ничего больше.В этом случае использование техники десериализации на самом деле ничего не делает для вас.

Если вы используете почти каждый последний бит данных в документе XML, и его структура отражает структуру вашей объектной модели, то, безусловно,десериализовать это.Это то, что я делаю все время для таких вещей, как файлы настроек и даже простые форматы файлов.

В вашем случае это звучит так, как будто оно уже существует и было создано каким-то внешним источником, а вы нев вашем коде уже нет объектного представления данных, поэтому я бы предложил использовать подход, основанный на LINQ.Кроме того, вы упомянули множество вариаций в файлах, поэтому гибкость LINQ снова пригодится.Хотя это дикое предположение, основанное на вашем описании.

1 голос
/ 19 апреля 2011

Вы можете использовать инструмент xsd.exe , который может генерировать эти классы из вашего файла XML:

C:\work>xsd test.xml
C:\work>xsd /classes test.xsd

На самом деле практического правила не существует.Лично я предпочитаю работать со строго типизированными объектами, если только размеры файлов не станут большими, в этом случае я переключаюсь на XmlReader.

...