C# Windows Phone应用程序需要从xml源读入

C# Windows Phone应用程序需要从xml源读入,c#,xml,C#,Xml,尝试用XML源中的值填充列表时出现问题 我有一个WebClient来阅读调用下面函数的项目 WebClient client = new WebClient(); client.OpenReadCompleted += new OpenReadCompletedEventHandler(client_OpenReadCompleted); Uri url = new Uri("http://www.usi.edu/webservices/iphone/USIINFOterms.xml", Uri

尝试用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>

2013年秋季
201410
2013年第三个夏天
201350
在xml文件方面运气不太好。非常感谢您的帮助。

有几点想法:

  • XDocument.Load(e.Result)
    替换为
    XDocument.Parse(e.Result)
    。将is参数视为URI,我假设您已经下载了XML文档。帮你打开那份文件

  • 请尝试以下操作:

    var results = from row in xml.Root.Elements("row")
                  select row.Element("value");
    
    仅从当前XML元素起作用——它不会扫描整个XML文档树。要扫描整个树,可以使用。或者,为了更精确地拾取所需的元素,请使用上面的模式——从第一个级别拾取元素,然后深入到下一个级别


  • 这起作用并消除了空引用错误;但是,通过这些结果的循环似乎没有触发。考虑在调试器中查找LINQ表达式的部分返回的内容,例如,XML.ROOT元素(“ROW”)返回什么内容?还要注意,我用xml.Root.Elements()替换了代码中的xml.Elements()。当打印出xml.Root.Elements(“行”)时,我得到了这样一个结果:线程“”(0xe3a004e)已退出,代码为0(0x0)。线程“”(0xea1005a)已退出,代码为0(0x0)。