【问题标题】:Parsing XML from youtube API in C#在 C# 中从 youtube API 解析 XML
【发布时间】:2013-05-27 02:59:06
【问题描述】:

我已经解析了一些 youtube API 返回的 XML。我试图解析的 XML 可以在这样的 URL 上找到 http://gdata.youtube.com/feeds/api/videos?v=2&q=stackoverflow

我要获取的节点是 yt:accessControl,但我不知道该怎么做。我已经尝试过 SelectNodes,但结果为空。

【问题讨论】:

    标签: c# xml xml-parsing youtube-api selectnodes


    【解决方案1】:

    对于 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);
    

    【讨论】:

    • 感谢您的回复!你能告诉我如何在没有 LINQ 的情况下做到这一点,因为我的整个代码已经在使用 System.Xml 中的函数
    • 我已经更新了我的答案,但我真的鼓励你为此使用谷歌的包装器。
    • 谢谢!需要做更多的编码,直到我掌握了解析 xml 的窍门 :)
    猜你喜欢
    • 2011-11-30
    • 2012-10-19
    • 2012-01-26
    • 1970-01-01
    • 2013-04-05
    • 2016-12-25
    • 1970-01-01
    • 2011-05-15
    • 1970-01-01
    相关资源
    最近更新 更多