Fil*_*lip 2 xml silverlight linq-to-xml windows-phone-7
我有一个XML文件,我想在Windows Phone 7和Silverlight应用程序中访问.XML文件位于Web服务器上,我想通过http://www.mydomain.com/data/this_is_my_file.xml访问它.
如何使用此URL将XML文件加载到XDocument中?
ind*_*moz 11
您可以使用WebClient或HttpWebRequest下载(异步)并解析响应.从Web下载和解析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));
}
Run Code Online (Sandbox Code Playgroud)
xmlUrl是Web上XML文件的路径.XmlItem是这样的一类 -
public class XmlItem
{
public string Title { get; set; }
public string Description { get; set; }
public Uri Url { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
您需要注意,如果要更新可观察集合,可能会遇到跨线程异常.在上面的例子中,XmlItems是一个List<XmlItem>.但是,如果您希望将XMLItem添加到可观察集合中,请使用以下代码 -
Dispatcher.BeginInvoke(() =>
{
XmlItems.Clear();
foreach (RssFeedItem item in rssFeedItems)
{
XmlItems.Add(item);
}
});
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用HttpWebRequest.您可以在此处阅读此方法并使用示例中的代码.
HTH,indyfromoz
| 归档时间: |
|
| 查看次数: |
12965 次 |
| 最近记录: |