的默認命名空間,我叫幾個類中的方法是這樣的:的LINQ to XML:得到RSS
GetResult(XElement item, XNamespace ns) {
item.Element(ns + "title").Value;
}
爲了初始化飼料和訪問元素表示上面我想找出默認命名空間。如果沒有任何名稱空間聲明,它會正常工作(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);
似乎是你的rss「錯誤」,因爲確實沒有指定默認命名空間,只有一個「content」命名空間。也許你需要對它進行硬編碼? – Davio 2013-02-19 12:16:56
可能不完全是你要求的,但你有沒有嘗試過SyndicationFeed類(http://msdn.microsoft.com/en-us/library/system.servicemodel.syndication.syndicationfeed.aspx)?我發現它非常有用。 – bytefire 2013-02-19 12:28:39