Преобразование XML в набор данных - PullRequest
1 голос
/ 08 марта 2012

У меня есть приложение .NET webforms, которое использует данные из веб-службы WCF / REST. Большую часть времени мы используем разделяемые классы для передачи данных туда и обратно, и это хорошо работает.

Однако иногда нам нужно отображать эти данные в Datagrid или аналогичном элементе управления .NET, и наиболее удобный способ сделать это - через набор данных. Я знаю, что мы можем читать XML в набор данных, используя метод Dataset.ReadXML (myXML, XmlReadMode.InferTypedSchema), и это работает хорошо.

Время от времени, однако, InferTypedSchema выводит неверный тип данных. Например, он решит, что почтовый индекс является целым числом, а не строкой.

Какие у меня варианты? Я знаю, что могу вручную определить схему набора данных, но я хотел бы избежать этого, если это возможно. Веб-сервис автоматически генерирует .xsd (т. Е. Автоматически сгенерированный URL-адрес ответа / схемы) - есть ли способ указать Dataset.ReadXML использовать это? Или есть лучший способ?

Ответы [ 2 ]

1 голос
/ 08 марта 2012

Я знаю, что вы можете заполнять свой DataSet не только данными, но и схемами, что-то вроде

dataSet.ReadXmlSchema(new System.IO.StreamReader("schema.xsd"));

так что если у вас есть xsd, то все будет в порядке.

0 голосов
/ 08 марта 2012

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

Инструмент определения схемы XML (Xsd.exe)

После создания файла класса вы можете использовать XmlSerializer.Deserialize для преобразования XML в класс.

...