Как выбрать сериализацию Xml, DataContractSerializer и LINQ to XML для сериализации дерева простых объектов? - PullRequest
4 голосов
/ 15 июня 2011

Мне нужно сериализовать дерево простых объектов в виде XML в / из файла - мир изменился с тех пор, как мне в последний раз приходилось это делать ...

(мне не важна схема XML, если специалист службы поддержки может понять файл, если это необходимо)

Так что же нужно учитывать при выборе между различными «easy xml» API в .net?

Ответы [ 2 ]

4 голосов
/ 30 июня 2011

Вот как я начал думать о параметрах:

LINQ to XML - полный контроль над XML и дизайном объектов, большинство кода любого из3 варианта.

DataContractSerializer - мало или совсем не контролирует XML, справляется с большинством объектов

XmlSerializer - полный контроль над XML,но вы должны проектировать объекты так, как это нравится в сериализации Xml.

3 голосов
/ 15 июня 2011

DataContractSerializer не обязательно испускает «типичный» xml, и вы не имеете большого контроля над выводом. Тем не менее, он поддерживает полные графики, если вам нужно. Если вам нужен xml и вам не нужны полные графики, я бы предпочел XmlSerializer - он позволит избежать написания какого-либо кода для ручного обхода данных (ala XmlDocument или XDocument), но при этом даст вам управление.

Одно предупреждение: XmlSerializer предъявляет требования к вашему типу (общедоступный, общедоступный конструктор без параметров, ограниченный общедоступными членами, никаких обратных вызовов сериализации и т. Д.). Они обычно не являются проблемой.

Но тогда я все равно, вероятно, буду писать бинарный файл вместо xml; p (только не с BinaryFormatter, который имеет .... kinks).

...