C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: XMLの取得について


(過去ログ 119 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■69852 / inTopicNo.1)  XMLの取得について
  
□投稿者/ kazu (2回)-(2014/02/02(Sun) 23:44:41)

分類:[ASP.NET (VB)] 

2014/02/02(Sun) 23:49:58 編集(投稿者)
2014/02/02(Sun) 23:49:56 編集(投稿者)
2014/02/02(Sun) 23:49:12 編集(投稿者)
2014/02/02(Sun) 23:46:37 編集(投稿者)
2014/02/02(Sun) 23:45:22 編集(投稿者)
2014/02/02(Sun) 23:45:20 編集(投稿者)

1週間ほど前からASP.NET(VB)を勉強し始めました。WEBのAPIを利用したいと思っています。初心者ながら難しい事から始め、そして質問する形でご迷惑をお掛けしまします。是非、宜しくお願いします。

以下のコードでXMLのデータを取得しようとしました。ISBNのデータから取得しているので1件だけの取得です。

    Dim xmldoc As New XmlDocument()
Dim nsmgr As XmlNamespaceManager = New XmlNamespaceManager(xmldoc.NameTable)
nsmgr.AddNamespace("dc", "http://purl.org/dc/elements/1.1/")
Dim nsmgr2 As XmlNamespaceManager = New XmlNamespaceManager(xmldoc.NameTable)
nsmgr2.AddNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance")
Dim nsmgr3 As XmlNamespaceManager = New XmlNamespaceManager(xmldoc.NameTable)
nsmgr3.AddNamespace("dcndl", "http://ndl.go.jp/dcndl/terms/")
xmldoc.Load("http://iss.ndl.go.jp/api/opensearch?isbn=9784062812016")
Dim d(1) As String
Dim list As XmlNodeList
Dim node As XmlNode

list = xmldoc.SelectNodes("/rss/channel/item/dc:subject/@dcndl:NDLC", nsmgr)
For Each node In list
d(1) = node.InnerText
TextBox11.Text = d(1)
Next

>list = xmldoc.SelectNodes("/rss/channel/item/dc:subject/@dcndl:NDLC", nsmgr)
ここに書いていますように、/dc:subject/@dcndl:NDLCを定義する為に、nsmgrを用意しました。ですが、nsmgr2、nsmgr3を同時に使う方法が分からずエラーが出ます。

以下、取得を希望しているXMLです。
<dcterms:issued xsi:type="dcterms:W3CDTF">2008</dcterms:issued>
<dc:identifier xsi:type="dcndl:ISBN">9784062812016</dc:identifier>
<dc:identifier xsi:type="dcndl:JPNO">21436136</dc:identifier>
<dc:subject>Marie Antoinette, 1755-1793</dc:subject>
<dc:subject>Fersen, Hans Axel von, greve, 1755-1810</dc:subject>
<dc:subject xsi:type="dcndl:NDLC">GK465</dc:subject>
<dc:subject xsi:type="dcndl:NDC9">289.3</dc:subject>
<dcterms:description>肖像あり</dcterms:description>
<dcterms:description>年表あり</dcterms:description>
<dcterms:description>文献あり</dcterms:description>

NDLCとNDC9を取得したいのですが、色々試したのですが上手く行きませんでした。ネットで色々調べて見て該当するサンプルを見て試したのですが、どうしてもダメでした。藁をも掴む思いです。是非、ご教授下さい。また、何かヒントでも良いので是非、宜しく願いします。私のような初心者が専門の掲示板を利用して申し訳ないと思いますが、是非、宜しくお願いします。

>list = xmldoc.SelectNodes("/rss/channel/item/dc:subject[1]", nsmgr)
でも値は取得できたのですが、XMLの構造は、NDLCとNDC9があったりなかったりします・・・
引用返信 編集キー/
■69853 / inTopicNo.2)  Re[1]: XMLの取得について
□投稿者/ Hongliang (161回)-(2014/02/03(Mon) 00:02:00)
一つのXmlNamespaceManagerに3つの名前空間をAddNamespaceするのでは駄目なのでしょうか?
引用返信 編集キー/
■69854 / inTopicNo.3)  Re[2]: XMLの取得について
□投稿者/ kazu (3回)-(2014/02/03(Mon) 00:06:28)
No69853 (Hongliang さん) に返信
> 一つのXmlNamespaceManagerに3つの名前空間をAddNamespaceするのでは駄目なのでしょうか?
Hongliang様、返信ありがとうございます!
なにぶん、初心者過ぎてAddNamespaceを調べる事から始めなければならないのですが、これをヒントに頑張ります!
出来れば、もう少し詳しくご教授お願いします!
引用返信 編集キー/
■69855 / inTopicNo.4)  Re[3]: XMLの取得について
□投稿者/ kazu (4回)-(2014/02/03(Mon) 00:10:44)
Hongliang様
ありがとうございます!まだ、値は取得できていないのですが、今まで出ていたエラーがでなくなりました。AddNamespaceは、いくらでも追加できるんですね!
ありがとうございます!
引用返信 編集キー/
■69856 / inTopicNo.5)  Re[4]: XMLの取得について
□投稿者/ kazu (5回)-(2014/02/03(Mon) 00:34:44)
list = xmldoc.SelectNodes("/rss/channel/item/dc:identifier/[xsi:type='dcndl:ISBN']", nsmgr)

としましたら、式はノードセットに対して評価する必要があります。

とエラーが出ました。どなたか、解決方法をご教授ください。宜しくお願いします。
引用返信 編集キー/
■69858 / inTopicNo.6)  Re[5]: XMLの取得について
□投稿者/ kazu (6回)-(2014/02/03(Mon) 00:57:53)
2014/02/03(Mon) 01:46:23 編集(投稿者)

これで取得できました。お世話をおかけました。
list = xmldoc.SelectNodes("/rss/channel/item/dc:identifier[@xsi:type='dcndl:ISBN']", nsmgr)
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -