Подтвердить что ты не робот

Как читать XML в класс/классы, соответствующий его xsd

Итак, у меня есть XSD и веб-сервис, который работает в том же формате.

Теперь я могу читать XML в документе, создавать свои объекты из класса и т.д. Но я думаю, должен быть более простой способ сделать это.

Я прав? ;)

<ResultSet xsi:schemaLocation="urn:yahoo:maps http://api.local.yahoo.com/MapsService/V1/GeocodeResponse.xsd">
 <Result precision="address">
  <Latitude>47.643727</Latitude>
  <Longitude>-122.130474</Longitude>
  <Address>1 Microsoft Way, #Way1</Address>
  <City>Redmond</City>
  <State>WA</State>
  <Zip>98052-6399</Zip>
  <Country>US</Country>
 </Result>
</ResultSet>

Ниже приведены автоматически сгенерированные классы (фактически два), использующие xsd.exe

.class diagram

4b9b3361

Ответ 1

Вы можете использовать XmlSerializer для десериализации XML-текста в экземпляры классов, сгенерированных xsd.exe.
XmlSerializer будет использовать атрибуты метаданных, помещенные в сгенерированные классы, для отображения между элементами XML и объектами.

string xmlSource = "<ResultSet><Result precision=\"address\"><Latitude>47.643727</Latitude></Result></ResultSet>";

XmlSerializer serializer = new XmlSerializer(typeof(ResultSet));
ResultSet output;

using (StringReader reader = new StringReader(xmlSource))
{
    output = (ResultSet)serializer.Deserialize(reader);
}

Ответ 2

Вы можете просто создать Typed DataSet из XSD, а затем заполнить один из этих объектов XML. Это довольно распространенный метод.

Ответ 3

Генератор кода XSD в Liquid XML Studio отлично справляется с созданием высокоуровневого кода С# или vb.net из XML-схемы. Этот код затем можно использовать для вызова или реализации веб-службы.

Если вы внедряете веб-сервис, вы можете взять на себя управление WSDL, созданным с использованием XmlSchemaProvider и IXmlSerializable, см. Контроль вашего WSDL