
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で質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Pythonで会員サイトの自動ログイン ID Nameがない 1 2022/12/16 02:09
- その他(プログラミング・Web制作) seleniumbasic chrome操作について 1 2023/03/29 15:40
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- HTML・CSS html/cssで要素が出てこなくて困ってます 1 2022/12/31 16:59
- Visual Basic(VBA) Sub 分けてソートして貼り付ける() Dim srcSheet As Worksheet Dim 6 2023/08/04 19:57
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- HTML・CSS cssの display: flex;で横並びにならずに困ってます 1 2022/12/04 13:18
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JSONで文字列が長い時
-
リロード後にプルダウンの選択...
-
メモリをアドレスを直接指定し...
-
Application.ScreenUpdating = ...
-
<SELECT>タグの折り返し
-
formで特定のinputを送信しない...
-
ベーシックをVBに訳してください。
-
プルダウンを連続してだしたい...
-
シェルスクリプトで、空白(ス...
-
FindFirst を複数条件で検索
-
c言語 16進数の2進数への変換
-
複数列を持ったリストボックス...
-
MSXMLでの属性の存在確認法
-
selectタグ内の特定のoptionの...
-
テーブル内でドロップダウンメ...
-
実行時エラー 3020の対策
-
特定の文字の個数を取得する簡...
-
文字のカラーとフォントの指定...
-
Sendmailの文字化けについて
-
[python] 文字列を変数名として...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JSONで文字列が長い時
-
メモリをアドレスを直接指定し...
-
複数行URLエンコードができるCG...
-
CGIでの表示の不具合について。
-
前のページへ戻ったときのプル...
-
Perlでアルファベットを数...
-
map(STL)でinsertを行いたいで...
-
途中まで出来ているのですが‥(D...
-
半角スペースが有効にならない。
-
CGIやPHPで外部ファイルの内容...
-
linq で 楽天ウェブサービスのX...
-
CGIからメールに書き出しする際...
-
iteratorの再利用について
-
Excel VBAで行追加後の...
-
ホームページ上にある表に書き...
-
CGIでのページ指定~その(2)
-
リロード後にプルダウンの選択...
-
連結リストについて
-
VB2010 のユーザコントロールの...
-
【C#】数値の範囲チェックについて
おすすめ情報