解析用C#复杂的XML [英] Parsing complex XML with C#

查看:209
本文介绍了解析用C#复杂的XML的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图解析用C#一个复杂的XML,我使用LINQ去做。基本上,我做的到服务器的请求,我得到XML,这是代码:

I am trying to parse a complex XML with C#, I am using Linq to do it. Basically, I am doing a request to a server and I get XML, this is the code:

XElement xdoc = XElement.Parse(e.Result);
this.newsList.ItemsSource = 
  from item in xdoc.Descendants("item")
  select new ArticlesItem
  {
    //Image = item.Element("image").Element("url").Value,
    Title = item.Element("title").Value,
    Description = this.Strip(item.Element("description").Value).Substring(0, 200).ToString()
  }

这是XML结构:

<item>
  <test:link_id>1282570</test:link_id>
  <test:user>SLAYERTANIC</test:user>
  <title>aaa</title>
  <description>aaa</description>
</item>



我怎么能访问到性能测试:比如link_id

How I can access to the property test:link_id for example?

谢谢!

推荐答案

目前您的XML是无效的,因为测试命名空间中未声明,你可以声明它是这样的:

Currently your XML is invalid since the test namespace is not declared, you can declare it like this:

<item xmlns:test="http://foo.bar">
  <test:link_id>1282570</test:link_id>
  <test:user>SLAYERTANIC</test:user>
  <title>aaa</title>
  <description>aaa</description>
</item>



有了这个,你可以使用的XNamespace 资格你想用正确的命名空间的XML元素:

Having this you can use XNamespace to qualify the XML element you want with the correct namespace:

XElement xdoc = XElement.Parse(e.Result);
XNamespace test = "http://foo.bar";
this.newsList.ItemsSource = from item in xdoc.Descendants("item")
                            select new ArticlesItem
                            {
                                LinkID = item.Element(test + "link_id").Value,
                                Title = item.Element("title").Value,
                                Description = this.Strip(item.Element("description").Value).Substring(0, 200).ToString()
                            }

这篇关于解析用C#复杂的XML的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆