関連記事の目次はこちら


今回は検索をしてみる。

ベースとするソースコードはこちらに書いたものを使い回す。

早速。
    For Each Node In XDoc.selectNodes("/records/prefectural/name[.='沖縄']")
Debug.Print Node.Text
Next

結果は

沖縄

となる。沖縄と同じテキストのものはこのひとつだから。

属性でも検索ができる。次のようなコードで。
    For Each Node In XDoc.selectNodes("/records/prefectural[@area='9']")
Debug.Print Node.Text
Next

結果は

鹿児島 鹿児島
沖縄 那覇

となる。


--------------------------------------

他の言語でのこととも書いたが、実はVBAでどうしてもXMLを使いたい状況になった、ということもあり、こういうネタを書いた。
更新等はそのうち書くとは思うが、これを使った別件に取りかかるため、XML系のネタは一旦これでお休みとする。

※並べ替えとか、面白そうなので簡単にできるなら、と思ったが、XSLを使った例しか見あたらなかったり・・。それってひとつ敷居が高かったりする・・。まだまだ勉強不足/情報不足なのだ。


表現が解りにくい等があればご連絡頂ければと思う。
関連記事の目次はこちら


今回は属性に関して。

ベースとするソースコードはこちらに書いたものを使い回す。

早速始める。
    For Each Node In XDoc.selectNodes("/records/prefectural/@id")
Debug.Print Node.XML
Next

結果は

01
02
46
47

となる。@を付けると、それは属性っていう決まりだそうな。

上記で @id を @area に変えるとエリアの情報が取れるが、@Area などとすると何も取れない。大文字と小文字は区別されている、ということになる。

属性と値を一緒に出すには次のようなコードで。
    For Each Node In XDoc.selectNodes("/records/prefectural")

Dim i As Integer
Dim Wk As String
Wk = ""
For i = 0 To Node.Attributes.Length - 1
Wk = Wk & Node.Attributes(i).baseName & ":" & Node.Attributes(i).Text & " , "
Next i
Wk = Left(Wk, Len(Wk) - 2)
Debug.Print Wk

Next

結果は

id:01 , area:1
id:02 , area:2
id:46 , area:9
id:47 , area:9

となる。

さて、次回はいよいよ検索に入っていこうと思う。
焼肉とそうめん、今の気分はどっち? ブログネタ:焼肉とそうめん、今の気分はどっち? 参加中


そうめんって、炭水化物のカタマリよ?特別美味しいわけでもないし、腹が満たされる程食べる前に飽きる。
その点、焼肉は単調ではなくて良い。夏こそしっかり食べて元気に過ごしたいモノだ。

また、そうめんにはないが、焼肉にはこんな歌もある。

ヨーデル食べ放題

¥895
Amazon.co.jp

食べ放題は魅力である。