
vb2008を使って、楽天ウェブサービスから取得したXMLデータを処理しようとしています。
楽天ウェブサービス 楽天ジャンル検索API
http://webservice.rakuten.co.jp/api/genresearch/
しかし、<genreSearch:GenreSearch>の処理がうまくいかずに困っています。
Dim elementRakuten = XElement.Load(strRakutenGenreSearchUrl)
でデータを受けた後、次のように取り出そうとしました。
elementRakuten.Element("Body").Element("genreSearch:GenreSearch")
しかし「':' 文字、16 進数値 0x3A を名前に含むことはできません。」というエラーが出てしまいます。
欲しい情報は<child>の一覧です。
データはこのような感じです。
どのように処理すべきなのかご教授お願いします。
<Response>
<header:Header xmlns:header="http://api.rakuten.co.jp/rws/rest/Header">
<Args>
<Arg key="developerId" value="xxxxxxxxxxxxxxxxxxxxxxxxxxxxx">true</Arg>
<Arg key="apiVersion" value="20">true</Arg>
<Arg key="operation" value="GenreSearch">true</Arg>
<Arg key="version" value="2007-04-11">true</Arg>
<Arg key="genreId" value="0">true</Arg>
</Args>
<Status>Success</Status>
<StatusMsg></StatusMsg>
</header:Header>
<Body>
<genreSearch:GenreSearch xmlns:genreSearch="http://api.rakuten.co.jp/rws/rest/GenreSearch/20 …
<child>
<genreId>101240</genreId>
<genreName>CD・DVD・楽器</genreName>
<genreLevel>1</genreLevel>
</child>
<child>
<genreId>100804</genreId>
<genreName>インテリア・寝具・収納</genreName>
<genreLevel>1</genreLevel>
</child>
<child>
<genreId>551177</genreId>
<genreName>メンズファッション・靴</genreName>
<genreLevel>1</genreLevel>
</child>
</genreSearch:GenreSearch>
</Body>
</Response>"
No.1ベストアンサー
- 回答日時:
'XNamespaceクラスとAdditions演算子(+)を使おう。
第二引数にStringを取る。XNameじゃないんだね。'文字列を指定しただけで出来るのはXNameへの暗黙の型変換が行なわれているんだと思うけど個人的には嫌い。
'Imports使ってないのは好みの問題です。読みにくくなるけど。
Option Explicit On
Option Infer Off
Option Strict On
Option Compare Binary
Class Q5109794
Shared Sub Main()
'長いので変数に分けているだけで,特に意味はない。
Dim doc As System.Xml.Linq.XDocument = System.Xml.Linq.XDocument.Load("D:\testfile.xml")
Dim body As System.Xml.Linq.XElement = doc.Element(System.Xml.Linq.XName.Get("Response")).Element(System.Xml.Linq.XName.Get("Body"))
Dim gSearch As System.Xml.Linq.XElement = body.Element(System.Xml.Linq.XNamespace.Get("http://api.rakuten.co.jp/rws/rest/GenreSearch/20 … + "GenreSearch")
For Each x As System.Xml.Linq.XElement in gSearch.Elements(System.Xml.Linq.XName.Get("child"))
System.Diagnostics.Debug.Print(x.Value)
Next
End Sub
End Class
名前空間というものと関連しているのですね。
http://www.atmarkit.co.jp/fxml/rensai/rexml06/re …
こちらのサイトを呼んでなんとなく判ってきました。
まだまだ理解できなくてあちこち文献を見ています。
コードありがとうございます。
参考にさせて頂きます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JSONで文字列が長い時
-
Application.ScreenUpdating = ...
-
formで特定のinputを送信しない...
-
C言語のflagの使い方が分かりま...
-
I2C接続のLCDディスプレイを使う
-
html select optionが左寄せに...
-
pythonの*
-
関数「exists」と「defined」の...
-
文字のカラーとフォントの指定...
-
STLのlistで重複するものだけを...
-
「*:*」って何を意味するのでし...
-
Perlにて、sendmailを使用する...
-
[python] 文字列を変数名として...
-
パイソンのクラスについて
-
フォームの「キャンセル」ボタ...
-
Perl からbashを呼び出したい
-
16進の10進変換について
-
Pythonの np.indicesに関する質...
-
Linuxのperrorのpは何の意味?
-
2つのpythonがあって、一方で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JSONで文字列が長い時
-
メモリをアドレスを直接指定し...
-
リロード後にプルダウンの選択...
-
フォームのINPUT NAM...
-
【C#】数値の範囲チェックについて
-
linq で 楽天ウェブサービスのX...
-
ラズパイで感圧センサーを動か...
-
map(STL)でinsertを行いたいで...
-
formのvalueについて
-
jcode.plの使い方
-
CGI(Perl)で、Net::FTPを使いたい
-
Perlでアルファベットを数...
-
tr///;はカンマを処理できない...
-
gpioを使ってSPIをシミュレーシ...
-
半角スペースが有効にならない。
-
連結リストについて
-
Application.ScreenUpdating = ...
-
formで特定のinputを送信しない...
-
実行時エラー 3020の対策
-
<SELECT>タグの折り返し
おすすめ情報