Есть ли что-то вроде JAX-B для C #? - PullRequest
4 голосов
/ 11 августа 2009

Мы ищем библиотеку, которая поддерживает маршалинг и демаршаллинг, такие как JAX-B в Java, есть ли какая-либо современная библиотека для использования?

Ответы [ 3 ]

4 голосов
/ 19 августа 2009

Как сказал Бруно, то, что вы ищете, находится в пространстве имен System.Xml.Serialization , точнее, в классе XmlSerializer . Чтобы сериализовать объект в XML, вам просто нужно вызвать метод Serialize , и обратное можно сделать с помощью метода Deserialize . Дополнительные сведения см. В теме MSDN Введение в сериализацию XML .

.

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

1 голос
/ 11 августа 2009

System.Xml.Serialization Пространство имен - это то, что вам нужно. Он может работать с атрибутами , как аннотации Java.

0 голосов
/ 23 января 2015

Есть что-то вроде, но не совсем как JAXB. Об этом говорят Аллон Гуралнек и Бруно Конде. Разница в десериализации. С XmlSerializer вы должны указать тип. Тип может быть получен из XSD-файла XML Schema, который обрабатывается инструментом XSD.EXE. Инструмент создает файл cs с частичными классами для каждого определенного типа в схеме XML. Это удобно в использовании.

Но вы не можете использовать derserializer в XmlSerilaizer, если у вас нет типа для действительного xml. Сценарий может выглядеть следующим образом. Вы получаете сообщения в формате xml из очереди сообщений. Вы можете получить любой из типов, определенных в XML-схеме. С JAXB вы дерисализируете xml в объект и используете свойство getClass, чтобы определить, какой это тип. Я не нашел аналогичного способа сделать это в C #.

...