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)