c# - 在列表框错误中提供 YouTube

标签 c# xml winforms visual-studio-2010

我已经尝试使用此代码在列表框中插入提要,但是对于 youtube 提要它不起作用。抱歉,我对 xml 了解不多

XmlDocument RSSXml = new XmlDocument();
RSSXml.Load("http://gdata.youtube.com/feeds/api/users/google/uploads");

XmlNodeList RSSNodeList = RSSXml.SelectNodes("feed");
XmlNode RSSDesc = RSSXml.SelectSingleNode("feed");

 foreach (XmlNode RSSNode in RSSNodeList)
 {
     XmlNode RSSSubNode;
     RSSSubNode = RSSNode.SelectSingleNode("title");
     string title = RSSSubNode != null ? RSSSubNode.InnerText : "";
     RSSSubNode = RSSNode.SelectSingleNode("link");
     string link = RSSSubNode != null ? RSSSubNode.InnerText : "";
     listBox1.Items.Add(title);                   
}

相反,这是可行的

//Fetch the subscribed RSS Feed
XmlDocument RSSXml = new XmlDocument();
RSSXml.Load("mywebsite/feed/");

XmlNodeList RSSNodeList = RSSXml.SelectNodes("rss/channel/item");
XmlNode RSSDesc = RSSXml.SelectSingleNode("rss/channel/title");

foreach (XmlNode RSSNode in RSSNodeList)
{
    XmlNode RSSSubNode;
    RSSSubNode = RSSNode.SelectSingleNode("title");
    string title = RSSSubNode != null ? RSSSubNode.InnerText : "";
    RSSSubNode = RSSNode.SelectSingleNode("link");
    string link = RSSSubNode != null ? RSSSubNode.InnerText : "";                                       
    listBox1.Items.Add(title);
    listBox2.Items.Add(link); 
}

感谢您的回答

最佳答案

命名空间在选择 xml 文档中的节点时起着重要作用。您必须添加一个 namespace 管理器并明确指出您想要的元素。选择属性(用于链接)也不同于元素的内部文本。

     XmlDocument RSSXml = new XmlDocument(); 
     RSSXml.Load("http://gdata.youtube.com/feeds/api/users/google/uploads");  

    XmlNamespaceManager nsmgr = new XmlNamespaceManager(RSSXml.NameTable);
    nsmgr.AddNamespace("tns", "http://www.w3.org/2005/Atom");

    XmlNodeList RSSNodeList = RSSXml.SelectNodes("//tns:entry", nsmgr); 
    XmlNode RSSDesc = RSSXml.SelectSingleNode("tns:feed",nsmgr);   

    foreach (XmlNode RSSNode in RSSNodeList)  {      
        XmlNode RSSSubNode;      
        RSSSubNode = RSSNode.SelectSingleNode("tns:title", nsmgr);      
        string title = RSSSubNode != null ? RSSSubNode.InnerText : "";      
        RSSSubNode = RSSNode.SelectSingleNode("tns:link/@href",nsmgr);      
        string link = RSSSubNode != null ? RSSSubNode.InnerText : "";      

        Console.WriteLine("{0} {1}",title, link);
    }

参见 SelectNodes with a namespacemanager

关于c# - 在列表框错误中提供 YouTube,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8748251/

相关文章:

c# - 在 C# 中找不到 System.Windows.Vector

c# - 获取对 ASP.NET web.config customErrors 部分的引用

c# - 类型为 'System.FormatException' 的未处理异常

mysql - 将大型 XML 文件解析到数据库中。使用多线程?

c# - 如何确定用户是否成功安装了我的软件?

c# - 在 .NET 1.1 中获取编码列表

javascript - 使用 xpath 计算具有特定属性值的节点?

底部固定按钮的Android布局

c# - 组合框外观

c# - 检测 ListView 滚动条何时到达底部