Windows Phone应用程序需要从xml源读取
本文关键字:xml 读取 Phone 应用程序 Windows | 更新日期: 2023-09-27 18:11:48
尝试用来自XML源的值填充列表的问题。
我有一个WebClient读到项目调用下面的函数。
WebClient client = new WebClient();
client.OpenReadCompleted += new OpenReadCompletedEventHandler(client_OpenReadCompleted);
Uri url = new Uri("http://www.usi.edu/webservices/iphone/USIINFOterms.xml", UriKind.Absolute);
client.OpenReadAsync(url);
功能public void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
try
{
var xml = XDocument.Load(e.Result);
var results = from row in xml.Element("value").Elements() select row;
// now I loop all rows and print the title; of course you canfc
// do other stuff here or combine some data processing with the LINQ above
// - this is up to you
foreach (var result in results)
{
item.ItemLine1 = result.Value;
list.Add(item);
}
}
catch (Exception c)
{
MessageBox.Show(c.Message);
}
}
列表元素返回空引用。
下面是XML文件的样子
<data>
<row>
<value>Fall 2013</value>
<value>201410</value>
</row>
<row>
<value>Third Summer 2013</value>
<value>201350</value>
</row>
xml文件没有太大的运气。
几点思考:
-
用
XDocument.Parse(e.Result)
代替XDocument.Load(e.Result)
。load()将其参数作为URI处理,并且您已经(我假设)下载了XML文档。XDocument.Parse()会帮你打开文件 -
尝试如下:
var results = from row in xml.Root.Elements("row") select row.Element("value");
XElement.Elements()只对当前XML元素起作用——它不扫描整个XML文档树。要扫描整个树,可以使用XElement.Descendants()。或者,为了更精确地选择您需要的元素,使用上面的模式——从第一层选择元素,然后深入到下一层。