2012-02-28 2 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

+0

기본 네임 스페이스가 무시됩니다. System.Xml은 mgr.AddNamespace ("", "http://www.w3.org/2005/Atom")을 좋아하지 않았습니다. 그래서 빈 문자열이있는 곳에서 직접 이름을 짓고 위의 Bhargav가 제안한 XPath의 변형을 실험했습니다. 모두에게 감사드립니다! @BhargavBhat – BrianO