我正在尝试使用XDocument和XPathEvaluate从woot.com Feed中获取值。我正在处理其他名称空间,但这个例子给了我一些问题。
<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=' --!>
所以我试试这个:
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);
val始终为null。我正在使用ns:来自VS 2010 XPath Navigator插件的建议。关于如何处理这个的任何想法?
答案 0 :(得分: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);
答案 1 :(得分:2)
man.AddNamespace("ns", "http://www.w3.org/2000/xmlns/");
以下是错误:您绑定到错误的命名空间。
必须:
man.AddNamespace("ns", "http://www.itunes.com/dtds/podcast-1.0.dtd");