我试图解析从youtue api返回的xml。apicall工作正常并创建一个xmldocument。我可以得到一个“entry”标记的xmlnodelist,但我不确定如何获取其中的元素,比如……
XmlDocument xmlDoc = youtubeService.GetSearchResults(search.Term, "published", 1, 50);
XmlNodeList listNodes = xmlDoc.GetElementsByTagName("entry");
foreach (XmlNode node in listNodes)
{
//not sure how to get elements in here
}
XML文档架构如下所示:http://code.google.com/apis/youtube/2.0/developers_guide_protocol_understanding_video_feeds.html
我知道那个节点。属性是错误的调用,但不确定正确的调用是什么?
顺便说一下,如果有更好的方法(更快,更少的内存)通过序列化或使用linq来实现这一点,我很乐意使用它。
谢谢你的帮助!
最佳答案
下面是一些读取xmldocument的示例。我不知道什么是最快的,或者什么需要更少的内存,但是我更喜欢linq而不是xml,因为它的清晰性。
XmlDocument xmlDoc = youtubeService.GetSearchResults(search.Term, "published", 1, 50);
XmlNodeList listNodes = xmlDoc.GetElementsByTagName("entry");
foreach (XmlNode node in listNodes)
{
// get child nodes
foreach (XmlNode childNode in node.ChildNodes)
{
}
// get specific child nodes
XPathNavigator navigator = node.CreateNavigator();
XPathNodeIterator iterator = navigator.Select(/* xpath selector according to the elements/attributes you need */);
while (iterator.MoveNext())
{
// f.e. iterator.Current.GetAttribute(), iterator.Current.Name and iterator.Current.Value available here
}
}
以及linq to xml:
XmlDocument xmlDoc = youtubeService.GetSearchResults(search.Term, "published", 1, 50);
XDocument xDoc = XDocument.Parse(xmlDoc.OuterXml);
var entries = from entry in xDoc.Descendants("entry")
select new
{
Id = entry.Element("id").Value,
Categories = entry.Elements("category").Select(c => c.Value)
};
foreach (var entry in entries)
{
// entry.Id and entry.Categories available here
}
关于c# - 如何在C#中解析XML文件(YouTube api结果)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1219544/