C# 用C解析youtube API中的XML#

C# 用C解析youtube API中的XML#,c#,xml,xml-parsing,youtube-api,selectnodes,C#,Xml,Xml Parsing,Youtube Api,Selectnodes,我已经解析了youtube API返回的一些XML。我试图解析的XML可以在如下URL上找到 我试图获取的节点是yt:accessControl,我不知道如何实现这一点。我尝试了SelectNodes,但结果是空的。对于youtube,我想你不需要它-google有专门针对.NET的API包装器: 但是,如果您仍然希望手动执行此操作,LINQ to XML方法(如子体和元素)将使用XName作为参数。有一个从字符串到XName的转换正在为您自动进行。您可以通过在子体和元素调用中的字符串之前添加一

我已经解析了youtube API返回的一些XML。我试图解析的XML可以在如下URL上找到


我试图获取的节点是yt:accessControl,我不知道如何实现这一点。我尝试了SelectNodes,但结果是空的。

对于youtube,我想你不需要它-google有专门针对.NET的API包装器:

但是,如果您仍然希望手动执行此操作,LINQ to XML方法(如子体和元素)将使用XName作为参数。有一个从字符串到XName的转换正在为您自动进行。您可以通过在子体和元素调用中的字符串之前添加一个XNamespace来解决这个问题。注意,因为您有两个不同的名称空间在工作

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.XmlI的函数了。我已经更新了我的答案,但我真的鼓励你使用google的包装器。谢谢!需要进行更多的编码,直到我掌握了解析xml的窍门:)