c# - 如何在 C# 中解析 XML 文件(youtube api 结果)?

标签 c# asp.net xml xsd

我正在尝试解析从 Youtue API 返回的 XML。 API 调用正常工作并创建 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

我知道 node.Attributes 是错误的调用,但不确定正确的调用是什么?

顺便说一句,如果有更好的方法(更快、更少的内存)通过序列化或使用 linq 来完成此操作,我很乐意使用它。

感谢您的帮助!

最佳答案

这里有一些读取 XmlDocument 的示例。我不知道什么最快或什么需要更少的内存 - 但我更喜欢 Linq To 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/

相关文章:

c# - 自定义过滤器属性注入(inject)依赖

c# - Windows 服务无法启动(错误 1053)

c# - 从 linq 在新对象中创建新属性

asp.net - 如何动态隐藏DetailsView中的字段(字段计数始终为0)

java - 使用 java 在 XML 中添加新节点

Java - 添加到 DOM XML 文件

c# - 如何修改C# Chart控件的chartArea百分比

asp.net - 如何: Dnn Custom Error Pages

c# - 将 iTextSharp 文档加载到 MemoryStream

c++ - 使用 Boost 属性树将 Unicode 字符串写入 XML