XPath式を使った要素の取得

メモ:  Category:vb

ここでは、XMLからXPath式を使って要素を取得する方法を見てみます。

サンプルとしてlivedoorのお天気情報サービス(Livedoor Weather Web Service / LWWS)を使用しています。

http://weather.livedoor.com/forecast/webservice/rest/v1?city=84&day=today

XPathとは、XML文書の中の特定の要素を指し示す記述方法で、基本的な記述はUNIXのファイルシステムに似ています(ロケーションパス)。文書木構造の頂点となるルートノードを「/」であらわし、以下、「/」で区切って要素をたどっていきます。

このロケーションパスは、XPathの主要な部分ですがもっと奥が深いです。

パスを指定して要素を取得

XPath式を指定して要素オブジェクトを取得するには、SelectNodes()を使用します。

livedoorのお天気情報サービス(Livedoor Weather Web Service / LWWS)を例にlocation要素を取得して見ます。

Dim weatherxml As New XmlDocument
Dim web As New System.Net.WebClient()
Dim st As System.IO.Stream = web.OpenRead("http://weather.livedoor.com/forecast/" _
                                          "webservice/rest/v1?city=84&day=today")

weatherxml.Load(st)

Dim nodeList As XmlNodeList = weatherxml.SelectNodes("/lwws/location")

For Each node As XmlNode In nodeList
    Trace.WriteLine(node.Attributes(0).Value)
Next

st.Close()

上記例では、無駄にFor Eachを使っていますが取得結果は、次のようになります。

近畿

bluenote by BBB