我用这种方式调用几个类中的方法:
GetResult(XElement item, XNamespace ns) {
item.Element(ns + "title").Value;
}
为了初始化feed并访问上面提到的元素,我想找出默认的命名空间。没有任何名称空间声明它工作正常(item.Element(“title”)。Value)并返回元素的值。
那我怎样才能找到正确的命名空间?方法root.GetDefaultNamespace()的结果以某种方式为空......
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
<channel>...</channel>
</rss>
//修改
好的,到目前为止我的代码:
XDocument thisFeed = XDocument.Load(@"http://www.spiegel.de/schlagzeilen/tops/index.rss");
XElement root = thisFeed.Root;
XNamespace ns = root.GetNamespaceOfPrefix("content");
//result:
Console.WriteLine("DefaultNamespace: " + root.GetDefaultNamespace());
//result: http://purl.org/rss/1.0/modules/content/
Console.WriteLine("GetNamespaceOfPrefix('content'): " + ns);
//works
Console.WriteLine("Result: " + root.Element("channel").Element("title").Value);
//Doesn't work
Console.WriteLine("Result: " + root.Element(ns + "channel").Element(ns + "title").Value);
答案 0 :(得分:0)
试试这样:
XNamespace ns = doc.Root.GetNamespaceOfPrefix("content");
您的示例中的 content
是前缀。可以在 w3schools article
<强>更新强>
在该文档中没有定义默认名称空间,只有带前缀的元素的名称空间,没有名称空间的其他元素。我发现只有元素<content:encoded>
使用前缀,对于该元素,您需要使用ns
。