Вы можете использовать WebClient
или HttpWebRequest
для загрузки (асинхронно) и анализа ответа. Ниже приведен один из самых простых способов загрузки и анализа XML из Интернета -
public void LoadXmlItems(string xmlUrl)
{
WebClient client = new WebClient();
client.OpenReadCompleted += (sender, e) =>
{
if (e.Error != null)
return;
Stream str = e.Result;
XDocument xdoc = XDocument.Load(str);
// take 10 first results
List<RssFeedItem> rssFeedItems = (from item in xdoc.Descendants("item")
select new XmlItem()
{
Title = item.Element("title").Value,
Description = item.Element("description").Value,
Url = new Uri(item.Element("link").Value, UriKind.Absolute)
}).ToList();
// close
str.Close();
// add results to the list
XmlItems.Clear();
foreach (RssFeedItem item in rssFeedItems)
{
XmlItems.Add(item);
}
};
client.OpenReadAsync(new Uri(xmlUrl, UriKind.Absolute));
}
xmlUrl
- это путь к XML-файлу в сети. XmlItem
такой класс -
public class XmlItem
{
public string Title { get; set; }
public string Description { get; set; }
public Uri Url { get; set; }
}
Вы должны заметить, что при обновлении наблюдаемой коллекции вы можете столкнуться с межпотоковым исключением. В приведенном выше примере XmlItems является List<XmlItem>
. Однако, если вы хотите добавить XMLItem в наблюдаемую коллекцию, используйте вместо этого этот фрагмент кода -
Dispatcher.BeginInvoke(() =>
{
XmlItems.Clear();
foreach (RssFeedItem item in rssFeedItems)
{
XmlItems.Add(item);
}
});
Альтернативный подход - использовать HttpWebRequest
. Вы можете прочитать об этом подходе здесь и использовать код в примере.
HTH, индифромоз