1

尝试使用 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文件没有太多运气。任何帮助表示赞赏。

4

1 回答 1

0

几个想法:

  1. 替换XDocument.Load(e.Result)XDocument.Parse(e.Result)XDocument.Load()将 is 参数视为 URI,并且您已经 - 我假设 - 已经下载了 XML 文档。 XDocument.Parse()会为您打开该文档。

  2. 尝试以下操作:

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

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

于 2013-05-02T01:49:28.690 回答