Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# windowsphone8c中的XML解析#_C#_Linq_Xml Parsing_Windows Phone 8 - Fatal编程技术网

C# windowsphone8c中的XML解析#

C# windowsphone8c中的XML解析#,c#,linq,xml-parsing,windows-phone-8,C#,Linq,Xml Parsing,Windows Phone 8,我想从以下url解析xml文件:“ 我可以使用以下代码获取XDocument: private void Search(object sender, RoutedEventArgs e) { string url = "http://restservice.schoolpundit.com/RestServiceImpl.svc/search_name/cvr"; WebClient twitter = new WebClient(); twitter.DownloadS

我想从以下url解析xml文件:“

我可以使用以下代码获取XDocument:

private void Search(object sender, RoutedEventArgs e)
{
    string url = "http://restservice.schoolpundit.com/RestServiceImpl.svc/search_name/cvr";
    WebClient twitter = new WebClient();
    twitter.DownloadStringCompleted += new DownloadStringCompletedEventHandler(twitter_DownloadStringCompleted);
    twitter.DownloadStringAsync(new Uri(url));
}

void twitter_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
    if (e.Error != null)
        return;
    XDocument doc = XDocument .Parse(e.Result);

    var list = from child in  doc.Descendants("Institutions_search_name")
               select new listrows {
                  inst_name=doc.Element("Inst_name").Value;
               };

     Listbox.ItemSource=list;
} 

但是它没有显示任何Inst\u名称,实际上它没有输入doc.substands(“Institutions\u search\u name”),它也没有显示任何异常。如果我有任何错误,请更正我。

我认为您只是缺少了名称空间-尽管您也在调用
doc.Element
而不是
child.Element
。如果查看XML,您将在根元素中看到:

 xmlns="http://schemas.datacontract.org/2004/07/RestService"
这意味着没有显式指定名称空间的每个元素都在该名称空间中

幸运的是,LINQ to XML使这一点非常容易处理:

XNamespace ns = "http://schemas.datacontract.org/2004/07/RestService";
var list = from child in doc.Descendants(ns + "Institutions_search_name")
           select new listrows {
               inst_name=child.Element(ns + "Inst_name").Value
           };
虽然我可能不使用查询表达式:

XNamespace ns = "http://schemas.datacontract.org/2004/07/RestService";
var list = doc.Descendants(ns + "Institutions_search_name")
              .Select(x => new listrows { 
                         inst_name = child.Element(ns + "Inst_name").Value
                      });
事实上,考虑到您只选择了一个字符串,我将去掉
listrows
位:

XNamespace ns = "http://schemas.datacontract.org/2004/07/RestService";
var list = doc.Descendants(ns + "Institutions_search_name")
              .Select(x => child.Element(ns + "Inst_name").Value);

还要注意的是,
listrows
inst_name
都违反了.NET命名约定-值得尝试与这些约定保持一致,以使您的代码更易于每个人阅读。

您的代码不会在任何地方使用
list
。。。它应该仍然会执行
doc.subjects
方法,但是您没有对结果做任何操作。您是否在调试器中检查了解析本身是否成功?请注意,当实际属性被称为
value
时,当您试图使用名为
value
的属性时,当前代码甚至无法编译。给我们一些类似于您的代码的东西是没有意义的——您应该给我们实际的代码来演示这个问题。我编辑了问题“现在检查并告诉我解析xml的方法”。您还没有说明是否已在调试器中检查
XDocument.parse
调用是否有效。(你问题中的代码格式糟糕透了。请花点力气让它可读,缩进一致,没有任何原因的大量垂直空白。)由于
,你所展示的代码仍然无法编译
值之后。你真的应该想出一个简短但完整的例子,在提问之前可以逐字逐句地发布。我在inst_name=child.Element(ns+“inst_name”).Value中得到一个NullReference异常,但inst_name中有文本