twitter search APIでtweetを取得するコードを書いておりました。
以前に試した時、XPathで何も問題なくresponseされたXMLを読めたのですが、今回何故か読めずに大ハマリ。
調べたところ、namespaceが設定されているXMLは、必ずXmlNamespaceManagerを使用したうえXPathも修飾しなければならない、との事。
Atomフィードでの取得でしたので、XmlNamespaceManagerをAtomにマッピングし、XPathも修飾し、SelectNodesメソッド時もXmlNamespaceManagerのインスタンスを渡す必要がある、と。そういう仕様でした。
※↑ここを読むだけでも難解ですね。
コード的にはこんな感じ。
(search APIでユーザ名+ハッシュタグ(#GRD3)によってtweetを取得する例です。TextBox1にユーザ名がある前提です)
string _xml = _client.DownloadString("http://search.twitter.com/search.atom?q=from%3a" + TextBox1.Text + "%20%23GRD3");
XmlDocument _doc = new XmlDocument();
_doc.LoadXml(_xml);
XmlNamespaceManager _xmlnsManager = new XmlNamespaceManager(_doc.NameTable);
_xmlnsManager.AddNamespace("atom", "http://www.w3.org/2005/Atom");
XmlNodeList _nodes = _doc.SelectNodes("/atom:feed/atom:entry/atom:title", _xmlnsManager);
で、_nodesにNodeListが入ります。
VB.netでも同じなんでしょうか? あー 「C」# だな って感じました。
でもやり方憶えたから良かったネという事で備忘録。
posted @ 21:23 feedback (0)