我试图解析从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/

10-09 12:36