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文件没有太大的运气。

Windows Phone应用程序需要从xml源读取

几点思考:

  1. XDocument.Parse(e.Result)代替XDocument.Load(e.Result)。load()将其参数作为URI处理,并且您已经(我假设)下载了XML文档。XDocument.Parse()会帮你打开文件

  2. 尝试如下:

    var results = from row in xml.Root.Elements("row")
                  select row.Element("value");
    

    XElement.Elements()只对当前XML元素起作用——它不扫描整个XML文档树。要扫描整个树,可以使用XElement.Descendants()。或者,为了更精确地选择您需要的元素,使用上面的模式——从第一层选择元素,然后深入到下一层。