如何解析具有多个默认命名空间的XML?

时间:2010-03-22 07:18:41

标签: c# xml nsxmlparser xml-parsing

这是我的XML响应:

 <DIDL-Lite
xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" 
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/"
<item id="1182" parentID="40" restricted="1">
<title>Hot Issue</title>
</item>
</DIDL-Lite>

当我尝试使用xELemnt解析它并尝试分配给如下的var时:

   var vnyData = from xmyResponse in xResponse.Descendants("DIDL-Lite").Elements("item")
select new myClass
                                     {strTitle = ((string)xmyResponse .Element("title")).Trim()};

这不是任何结果。

谢谢, Subhendu

2 个答案:

答案 0 :(得分:1)

如果文档中有默认命名空间,则必须将其解析为命名空间。例如。

XNamespace ns = "urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/";

var xDIDL = xResponse.Element(ns + "DIDL-Lite");

无论你怎么命名,ns变量都是不重要的。关键是,无论您传递元素名称(确切地说是XName),您都需要包含命名空间+名称。您会注意到字符串可以转换为XNamespace,但您也可以使用它的构造函数。

答案 1 :(得分:0)

您正在使用xml架构,该架构应存在于您尝试访问的元素的名称中。查看XNamespace课程。