私はこのようにいくつかのクラス内のメソッドを呼び出します:
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);