0

YouTube API が返す XML の一部を解析しました。解析しようとしている XML は、次のような URL にありますhttp://gdata.youtube.com/feeds/api/videos?v=2&q=stackoverflow

取得しようとしているノードは yt:accessControl で、これを行う方法がわかりません。SelectNodes を試してみましたが、空の結果が得られました。

4

1 に答える 1

0

YouTubeの場合、それは必要ないと思います-Googleには.NET専用のAPIラッパーがあります: https://developers.google.com/youtube/2.0/developers_guide_dotnet

それでも手動で行いたい場合は、Descendants や Element などの LINQ to XML メソッドが XName を引数として受け取ります。文字列から XName への変換が自動的に行われます。これを修正するには、子孫と要素の呼び出しで文字列の前に XNamespace を追加します。作業中の 2 つの異なる名前空間があるため、注意してください。

XNamespace ns = "http://gdata.youtube.com/schemas/2007";
var xElements = XElement.Parse(File.ReadAllText(@"c:\test\youtube.xml"))
                        .Descendants(ns + "accessControl");

Linq がないと、次のようになります。

var xdoc = new XmlDocument();
xdoc.Load(@"c:\test\youtube.xml");
var namespaceManager = new XmlNamespaceManager(xdoc.NameTable);
namespaceManager.AddNamespace("yt", "http://gdata.youtube.com/schemas/2007");
var xmlNodeList = xdoc.SelectNodes("//yt:accessControl", namespaceManager);
于 2013-05-31T10:10:58.110 に答える