2013-05-01 49 views
1

尝试用XML源文件中的值填充列表的问题。Windows Phone应用程序需要从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文件太多的运气。任何帮助表示赞赏。

回答

0

一对夫妇的想法:

  1. 更换XDocument.Load(e.Result)XDocument.Parse(e.Result)XDocument.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()。或者,为了更准确地选择您需要的元素,请使用上述模式 - 从第一级挑选元素,然后深入到下一级。

+0

这工作和摆脱空引用错误;然而,通过结果的循环似乎不会触发。 – user2341163 2013-05-02 02:10:23

+0

考虑在调试器中查看部分Linq表达式返回的内容,例如xml.Root.Elements(“row”)返回什么?另请注意,我用xml.Root.Elements()代替了代码中的xml.Elements()。 – 2013-05-02 02:19:56

+0

当打印出xml.Root.Elements(“row”)时,我得到: 线程''(0xe3a004e)已退出,代码为0(0x0)。 线程''(0xea1005a)已退出代码0(0x0)。 – user2341163 2013-05-02 02:24:40

相关问题