Приложение Windows для получения данных XML с веб-сайта, содержащего данные XML - PullRequest
1 голос
/ 26 сентября 2010

Я пытаюсь создать приложение для Windows Form (или WPF), разработанное на C #. Требование для моего приложения - получать данные, относящиеся к поиску пользователя, связанные с xml-узлами, с веб-сайта, содержащего xml.Приложение будет подключаться к веб-сайту, содержащему xml, и получать соответствующие узлы xml с веб-сайта.Затем я отобразил бы данные узла xml в своем приложении для Windows.Каков наилучший способ сделать это, также расширение должно было бы захватить весь XML и сохранить в уровне данных.Пример сайта я буду похож на эту страницу http://www.amk.ca/quotations/sherlock-holmes.xml

1 Ответ

4 голосов
/ 26 сентября 2010

Не совсем уверен, что ваши вопросы - вы спрашиваете, как этого добиться (загрузка XML), или где лучше всего его задать, или что?

Чтобы получить XML, используйте что-то вроде этого:

using System.Net;

WebClient client = new WebClient();
string result = client.DownloadString("http://www.amk.ca/quotations/sherlock-holmes.xml");

Вы получаете строку XML, которую теперь можете анализировать с помощью XmlDocument или XDocument (Linq-to-XML) - вы спрашиваете, как это сделать ??

Или, если вы знаете, какие сайты и какой формат XML вы используете заранее, вы также можете загрузить XML и сгенерировать из него схему XML, а на втором шаге создать классы C # из схемы XML, которая будет подходит для десериализации строки XML в перечисление, например, Quotation классов (на основе тега <quotation> в предоставленном примере XML).

Обновление: если у вас есть образец XML в виде файла, вы можете использовать утилиту командной строки xsd.exe для генерации схемы XML из XML, и на основе этой схемы XML вы можете создать класс C #, который будет использоваться для десериализации. Дополнительные сведения см. В документах MSDN для xsd.exe .

По сути, вызов xsd.exe (yourfile.xml) сгенерирует XML-схему yourfile.xsd на основе вашего входного XML-файла, а запуск xsd.exe /c (yourfile.xsd) сгенерирует класс C # из этой XML-схемы.

Используя это, вы можете десериализовать ваш XML в класс C # за один шаг, а затем «исследовать» содержимое XML, просто перемещаясь по классу C #, его свойствам и его спискам подэлементов.

Эта десериализация будет выглядеть примерно так:

XmlSerializer deserializer = new XmlSerializer(typeof(ThatDataTypeGenerated));

object result = deserializer.Deserialize(<either a file name, or a stream or something>);

Это работает до тех пор, пока вы не будете знать заранее, какой тип XML вы будете получать (чтобы вы могли заранее сгенерировать из него схему XML и класс C #).

Кроме того, вы можете сделать первый шаг (превратить файл данных XML в схему) тоже внутри Visual Studio (меню «XML» -> «Создать схему XML»), а также второй шаг (превратить схему XSD XML в класс C #), вы можете взглянуть на что-то вроде Xsd2Code .

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