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,我认为您不需要 - 谷歌有专门为 .NET 的 API 包装器:https ://developers.google.com/youtube/2.0/developers_guide_dotnet

但是,如果您仍希望手动执行此操作,则 LINQ to XML 方法(如 Descendants 和 Element)将 XName 作为参数。从字符串到 XName 的转换会自动为您进行。您可以通过在 Descendants 和 Element 调用中的字符串之前添加 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 回答