Классы XML в .NET - PullRequest
       30

Классы XML в .NET

2 голосов
/ 06 мая 2009

Я разрабатываю службу WCF, в которой есть некоторые операции, которые я предоставляю для получения данных. Эти операции принимают XML-документ в качестве параметра. Есть ли способ, которым я могу сопоставить узлы этого документа с классами, которые я создал для внутреннего использования?

РЕДАКТИРОВАТЬ: Одна из причин, по которой я принимаю документ XML, а не строго типизированный объект, заключается в том, что мы можем расширять API в будущем, не беспокоясь о нарушении структуры для разработчиков, использующих более старую версию. Есть ли лучший способ для разработки API, которые могут развиваться без необходимости просить клиентов изменить свои существующие реализации?

Ответы [ 6 ]

2 голосов
/ 06 мая 2009

Да, вы можете использовать класс XmlSerializer для преобразования XML в объекты и наоборот. Он действительно классный и простой в использовании, поскольку он просто использует отражение .NET, чтобы найти общедоступные свойства класса, которые сопоставляются с элементами XML. Точный формат XML можно контролировать с помощью таких атрибутов, как XmlElementAttribute .

2 голосов
/ 06 мая 2009

Если у вас есть схема (XSD) для используемого вами XML-документа, вы можете попробовать xsd.exe, поставляемый с .NET SDK, который сгенерирует классы для этой схемы.

1 голос
/ 06 мая 2009

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

.

http://msdn.microsoft.com/en-us/library/ms731060.aspx

1 голос
/ 06 мая 2009

Вы также можете создавать объекты и работать с функциями сериализации / десериализации, чтобы создать класс вручную, который соответствует структуре, которая вам нужна.

Это на самом деле очень простой процесс, эта статья MSDN http://msdn.microsoft.com/en-us/library/ms950721.aspx, проходит долгий путь, чтобы представить концепцию.

1 голос
/ 06 мая 2009

Почему бы не определить интерфейс службы, используя классы, которые вы будете отображать внутри? Тогда вам не нужно делать никаких карт.

0 голосов
/ 06 мая 2009

Вы можете использовать XMLReader напрямую или использовать LINQ to XML для сопоставления документа с вашими классами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...