如何使用XDocument.XPathEvaluate处理空命名空间?

Ali*_*ned 2 .net xpath linq-to-xml xml-namespaces

我正在尝试使用XDocument和XPathEvaluate从woot.com提要中获取值.我正在处理其他名称空间,但这个例子给了我一些问题.

     <rss xmlns:a10="http://www.w3.org/2005/Atom" version="2.0">
      <channel>    
        <category text="Comedy" xmlns="http://www.itunes.com/dtds/podcast-1.0.dtd">
</category> 
<!-- this is a problem node, notice 'xmlns=' --!>
Run Code Online (Sandbox Code Playgroud)

所以我试试这个:

  XmlNamespaceManager man = new XmlNamespaceManager(nt);
    man.AddNamespace("ns", "http://www.w3.org/2000/xmlns/");
// i've also tried man.AddNamespace("ns", string.Empty);
    xDocument.Namespace = man;
    var val = xDocument.XPathEvaluate("/rss/channel/ns:category/@text", xDocument.Namespace);
Run Code Online (Sandbox Code Playgroud)

val始终为null.我正在使用ns:来自VS 2010 XPath Navigator插件的建议.有关如何处理这个问题的任何想法?

Pav*_*aev 5

该元素category位于命名空间中http://www.itunes.com/dtds/podcast-1.0.dtd.它不是一个空命名空间.它只是没有在输入XML中给出前缀.

man.AddNamespace("ns", "http://www.itunes.com/dtds/podcast-1.0.dtd");
...
xDocument.XPathEvaluate("/rss/channel/ns:category/@text", xDocument.Namespace);
Run Code Online (Sandbox Code Playgroud)