2012-02-28 30 views
0

任何人都可以告訴我爲什麼這不會找到任何節點?在C#中使用DomDocument解析Twitter#

WebClient Client = new WebClient();  
    Stream stream = 
    Client.OpenRead("http://search.twitter.com/search.atom?q=JetBlueCheeps"); 

    StreamReader reader = new StreamReader(stream); 
    XmlDocument doc = new XmlDocument(); 
    XmlNamespaceManager mgr = new XmlNamespaceManager(doc.NameTable); 

    mgr.AddNamespace("google", "http://base.google.com/ns/1.0"); 
    mgr.AddNamespace("openSearch", "http://a9.com/-/spec/opensearch/1.1/"); 
    mgr.AddNamespace("", "http://www.w3.org/2005/Atom"); 
    mgr.AddNamespace("twitter", "http://api.twitter.com/"); 
    mgr.AddNamespace("georss", "http://www.georss.org/georss"); 

    doc.LoadXml(reader.ReadToEnd()); 
    XmlNodeList list = doc.DocumentElement.SelectNodes("entry", mgr); 

我想讀所有的「入門」節點,它們存在的文件中,因爲這種替代方法工作:

XmlNode fentry = doc.DocumentElement.ChildNodes[9]; 
    while (fentry.NextSibling != null) 
      fentry = fentry.NextSibling; 

謝謝!

回答

2

它希望將XPath指向要選擇的節點。嘗試:

XmlNodeList list = doc.DocumentElement.SelectNodes("feed/entry", mgr);

XmlNodeList list = doc.DocumentElement.SelectNodes("//entry", mgr);

如果你想不管在哪裏匹配文檔層次他們都 feed節點

+0

試過這些XPath以及其他很多。謝謝你的提示。 – BrianO 2012-02-28 21:24:32

+0

覆蓋默認命名空間的作品。 System.Xml不喜歡mgr.AddNamespace(「」,「http://www.w3.org/2005/Atom」)。所以我把自己的名字放在空字符串的位置,當然也是按照上面Bhargav的建議,嘗試了XPath的變體。謝謝大家! @BhargavBhat – BrianO 2012-03-01 22:08:56