2009-08-11 9 views
4

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

+1

http://stackoverflow.com/questions/765422/jaxb-equivalent-in-c – AakashM

+1

Я не думаю, что это обман. Насколько я понимаю из этого вопроса, я думаю, что OP пытается найти структуру, похожую на JAXB, а не на внешний инструмент ... –

+0

у вас есть это bruno conde – codevour

ответ

4

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

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

0

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

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