如何使用 XDocument.XPathEvaluate 处理空命名空间?
我正在尝试使用 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=' --!>
所以我尝试这样做:
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 始终为空。我正在使用 ns: 来自 VS 2010 XPath Navigator 插件的建议。关于如何处理这个问题有什么想法吗?
I'm trying to use XDocument and XPathEvaluate to get values from the woot.com feed. I'm handling other namespaces fine, but this example is giving me problems.
<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=' --!>
So I try this:
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 is always null. I'm using ns: from the suggestion from VS 2010 XPath Navigator plugin. Any thoughts on how to handle this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
元素
category
位于命名空间http://www.itunes.com/dtds/podcast-1.0.dtd
中。它不是一个空的命名空间。只是在输入 XML 中没有为其指定前缀。The element
category
is in namespacehttp://www.itunes.com/dtds/podcast-1.0.dtd
. It's not an empty namespace. It just isn't given a prefix in input XML.这是错误:您绑定到了错误的名称空间。
必须是:
Here is the error: you bind to the wrong namespace.
Must be: