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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.69859 の関連記事表示

<< 0 >>
■69859  ASP.NETでのWEBのAPIにおけるXMLの取得について
□投稿者/ kazu -(2014/02/03(Mon) 07:40:03)

    分類:[ASP.NET (VB)] 


    Imports System.Xml
    Imports System.Data

    Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim dataSet As DataSet = New DataSet
    Dim dataTable As DataTable
    Dim xmlPath As String = "http://hon.jp/rest/2.1/null/aOENZ00002/mode=jumplist"

    dataSet.ReadXml(xmlPath)
    For Each dataTable In dataSet.Tables
    dataTable.EndLoadData()
    Next
    GridView1.DataSource = dataSet.Tables("book")
    GridView1.DataBind()
    End Sub
    End Class

    以上のコードで、GridView1にXMLのデータを取得しています。このコードを、http://iss.ndl.go.jp/api/opensearch?title=%E3%83%9E%E3%83%AA%E3%83%BC%E3%82%A2%E3%83%B3%E3%83%88%E3%83%AF%E3%83%8D%E3%83%83%E3%83%88&ndc=2
    このURLのXMLからデータを取得したいと希望しています。

    Imports System.Xml
    Imports System.Data

    Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim dataSet As DataSet = New DataSet
    Dim dataTable As DataTable
    Dim xmlPath As String = "http://iss.ndl.go.jp/api/opensearch?title=%E3%83%9E%E3%83%AA%E3%83%BC%E3%82%A2%E3%83%B3%E3%83%88%E3%83%AF%E3%83%8D%E3%83%83%E3%83%88&ndc=2"

    dataSet.ReadXml(xmlPath)
    For Each dataTable In dataSet.Tables
    dataTable.EndLoadData()
    Next
    GridView1.DataSource = dataSet.Tables("book")
    GridView1.DataBind()
    End Sub
    End Class

    このコードを試して頂くと分かりますように、XMLの構造の中に同じタグがあるとエラーが出ます。DataSetを利用したAPIの利用は、同じタグがあるXMLの構造だと難しいでしょうか?

    また、別な代替案がありましたら、ぜひ、ご教授ください!

    宜しくお願いします!
親記事 /過去ログ119より / 関連記事表示
削除チェック/

■69860  Re[1]: ASP.NETでのWEBのAPIにおけるXMLの取得について
□投稿者/ kazu -(2014/02/03(Mon) 08:13:05)
    2014/02/03(Mon) 08:39:20 編集(投稿者)

    エラーという表示をいれて構造がずれないようにしたのですが、エラーが表示されません。これを使って帳票形式のフォームを作ろうとしましたが、ダメでした。どうして、エラーという文字が出ないのでしょうか?宜しくお願いします。
    Imports System.Web
    Imports System.Xml
    Imports System.Xml.Xsl
    Imports System.Data
    Imports System.Data.SqlClient

    Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim xmldoc As New XmlDocument()
    Dim nsmgr As XmlNamespaceManager = New XmlNamespaceManager(xmldoc.NameTable)
    nsmgr.AddNamespace("dc", "http://purl.org/dc/elements/1.1/")
    nsmgr.AddNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance")
    nsmgr.AddNamespace("dcndl", "http://ndl.go.jp/dcndl/terms/")


    xmldoc.Load("http://iss.ndl.go.jp/api/opensearch?isbn=9784062812016")
    Dim d(11) As String
    Dim list As XmlNodeList
    Dim node As XmlNode

    list = xmldoc.SelectNodes("/rss/channel/item/dc:identifie[@xsi:type='dcndl:ISBN']", nsmgr)
    For Each node In list

    Select Case list.Count
    Case Is = 1
    d(11) = node.InnerText
    TextBox11.Text = d(11)
    Case Is = 0

    TextBox11.Text = "エラー"
    End Select

    Next
    End Sub

    End Class

    Caseの所に何か適切なものを入れて条件分岐で判断してデータを取得して、 GridView1に表示させようと考えました。
記事No.69859 のレス /過去ログ119より / 関連記事表示
削除チェック/

■69861  Re[2]: ASP.NETでのWEBのAPIにおけるXMLの取得について
□投稿者/ a -(2014/02/03(Mon) 09:46:20)
    No69860 (kazu さん) に返信
    > 2014/02/03(Mon) 08:39:20 編集(投稿者)
    >
    > どうして、エラーという文字が出ないのでしょうか?
    >

    >Select Case list.Count
    >Case Is = 0
    > TextBox11.Text = "エラー"
    >
    のことを言っているのなら「list.Count=0」の時はFor Eachの中に入らないからです。

    #全体をあまり理解してないから外してるかな?
記事No.69859 のレス /過去ログ119より / 関連記事表示
削除チェック/

■69862  Re[3]: ASP.NETでのWEBのAPIにおけるXMLの取得について
□投稿者/ kazu -(2014/02/03(Mon) 11:59:47)
    ありがとうございます!なるほどです。勉強になります。構造がずれないように、二重のループにするようにしました。

    それから、データーベースに接続して、ループの中で、テーブルを追加するプログラムを考えています!

    もしかしたら、上手く行くかもしれません!

    今仕事で外回りしているので自宅に帰ったら早速試してみます。
記事No.69859 のレス /過去ログ119より / 関連記事表示
削除チェック/

■69863  Re[1]: ASP.NETでのWEBのAPIにおけるXMLの取得について
□投稿者/ WebSurfer -(2014/02/03(Mon) 13:25:40)
    No69859 (kazu さん) に返信
    > また、別な代替案がありましたら、ぜひ、ご教授ください!
    
    データソースコントロールの XmlDataSource を使えば簡単にできるはずです。
    
    何を GridView に表示したいのか分かりませんが、例えば title, link, description, category
    を表示する場合は、以下のようにすれば OK です。(他に、xsl 変換ファイルを使う方法もあります)
    
    
    <%@ Page Language="C#" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <script runat="server">
    
    </script>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:XmlDataSource ID="XmlDataSource1" runat="server" 
                DataFile="http://iss.ndl.go.jp/api/opensearch?title=%E3%83%9E%E3%83%AA%E3%83%BC%E3%82%A2%E3%83%B3%E3%83%88%E3%83%AF%E3%83%8D%E3%83%83%E3%83%88&amp;ndc=2"
                Xpath="rss/channel/item">
            </asp:XmlDataSource>
            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
                DataSourceID="XmlDataSource1">
                <Columns>
                    <asp:TemplateField HeaderText="Title">
                        <ItemTemplate>
                            <asp:HyperLink ID="HyperLink1" runat="server" Text='<%# XPath("title") %>' NavigateUrl='<%# XPath("link") %>'>
                            </asp:HyperLink>                        
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Description">
                        <ItemTemplate>
                            <asp:Label ID="Label1" runat="server" Text='<%# XPath("description") %>'>
                            </asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Category">                    
                        <ItemTemplate>
                            <asp:Label ID="Label2" runat="server" Text='<%# XPath("category") %>'>
                            </asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
        </div>
        </form>
    </body>
    </html>
記事No.69859 のレス /過去ログ119より / 関連記事表示
削除チェック/

■69867  Re[2]: ASP.NETでのWEBのAPIにおけるXMLの取得について
□投稿者/ kazu -(2014/02/03(Mon) 20:07:55)
    2014/02/03(Mon) 20:10:55 編集(投稿者)

    WebSurfer様!
    ありがとうございます!

    出来ればなんですが・・・
    フォームにテキストボックスを配置してタイトル等を入力して取得できるXMLの内容を変えたいと思っていました。それは教えて頂いたやり方で可能でしょうか?

    そこで、また懲りずに、VBの方で処理しようと考え接続しているACCESSのテーブルへデータを取得してみたのですが、XMLの先頭のレコードのみ延々と繰り返して取得してしまいました。配列の使用の仕方に問題があると思うのですが、何度やっても解決出来ません。どうか、ご教授ください。宜しくお願いします!以下、余計なものを省略したコードです。


    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim cn As New OleDbConnection 'OleDbConnectionオブジェクト
    Dim cmd As New OleDbCommand 'OleDbCommandオブジェクト
    Dim affectedRows As Integer '更新したレコード数
    ' 仮想アプリケーションルートパスを取得
    Dim vPath As String = Request.ApplicationPath ' 仮想アプリケーションルートパスの物理パスを取得
    Dim path As String = Server.MapPath(vPath) '接続情報
    Dim xmldoc As New XmlDocument()
    Dim nsmgr As XmlNamespaceManager = New XmlNamespaceManager(xmldoc.NameTable)
    nsmgr.AddNamespace("dc", "http://purl.org/dc/elements/1.1/")
    nsmgr.AddNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance")
    nsmgr.AddNamespace("dcndl", "http://ndl.go.jp/dcndl/terms/")
    nsmgr.AddNamespace("dcterms", "http://purl.org/dc/terms/")
    Dim nodelist As XmlNodeList
    Dim node As XmlNode
    Dim A() As String
    Dim i As Long
    i = 0
    xmldoc = New XmlDocument()
    xmldoc.Load("http://iss.ndl.go.jp/api/opensearch?title=%E3%83%9E%E3%83%AA%E3%83%BC%E3%82%A2%E3%83%B3%E3%83%88%E3%83%AF%E3%83%8D%E3%83%83%E3%83%88&ndc=2")

    nodelist = xmldoc.SelectNodes("/rss/channel/item/dc:title", nsmgr)
    For Each node In nodelist
    cn.ConnectionString = _
    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
    path & "\App_Data\toshokan.mdb"


    ReDim A(i)

    A(i) = node.InnerText
    'INSERTコマンド
    cmd.Connection = cn
    cmd.CommandText = "INSERT INTO [T_APIデータ取得] " _
    & " ([タイトル]) " _
    & "VALUES (?)"

    'パラメータに値を代入
    cmd.Parameters.AddWithValue("[タイトル]", A(i))
    '実行
    cn.Open()
    Try
    affectedRows = cmd.ExecuteNonQuery()
    Catch ex As Exception
    Finally
    cn.Close()
    End Try
    i = i + 1
    Next

    End Sub
記事No.69859 のレス /過去ログ119より / 関連記事表示
削除チェック/

■69868  Re[3]: ASP.NETでのWEBのAPIにおけるXMLの取得について
□投稿者/ WebSurfer -(2014/02/03(Mon) 22:14:16)
    No69867 (kazu さん) に返信
    > 2014/02/03(Mon) 20:10:55 編集(投稿者)
    >
    > WebSurfer様!
    > ありがとうございます!
    >
    > 出来ればなんですが・・・
    > フォームにテキストボックスを配置してタイトル等を入力して取得できるXMLの内容を変えたいと思っていました。それは教えて頂いたやり方で可能でしょうか?
    >
    > そこで、また懲りずに、VBの方で処理しようと考え接続しているACCESSのテーブルへデータを取得してみたのですが、XMLの先頭のレコードのみ延々と繰り返して取得してしまいました。配列の使用の仕方に問題があると思うのですが、何度やっても解決出来ません。どうか、ご教授ください。宜しくお願いします!以下、余計なものを省略したコードです。

    そんな長いコードは読む気がしません。

    一体あなたは何がしたいんですか?
記事No.69859 のレス /過去ログ119より / 関連記事表示
削除チェック/

■69869  Re[4]: ASP.NETでのWEBのAPIにおけるXMLの取得について
□投稿者/ kazu -(2014/02/03(Mon) 22:32:21)
    2014/02/03(Mon) 22:40:16 編集(投稿者)
    2014/02/03(Mon) 22:39:42 編集(投稿者)
    2014/02/03(Mon) 22:39:39 編集(投稿者)

    申し訳ございません。

    フォームにテキストボックスを配置して、テキストボックスの内容のタイトルを検索するWEBを作ろうとしていました。

    http://iss.ndl.go.jp/api/opensearch?title=%E3%83%9E%E3%83%AA%E3%83%BC%E3%82%A2%E3%83%B3%E3%83%88%E3%83%AF%E3%83%8D%E3%83%83%E3%83%88&ndc=2

    ここにアクセスすると、一番最初の<title>週刊100人 : 歴史は彼らによってつくられた</title>を延々と数十行も取得してしまうんです・・・

    でも

    Response.Write

    でフォームに書き込むと正常に表示されます・・・

    やりたいことは、XMLを1行ずつ取得して、データーベースに追加していくループなんです。わかりづらくてすみません。

    WebSurfer様の教えていた方法で、テキストボックスを配置して、タイトルを入力して抽出したものを表示させる方法がありましたら是非、お願いします。
記事No.69859 のレス /過去ログ119より / 関連記事表示
削除チェック/

■69870  Re[5]: ASP.NETでのWEBのAPIにおけるXMLの取得について
□投稿者/ WebSurfer -(2014/02/03(Mon) 22:49:31)
    No69869 (kazu さん) に返信
    > 申し訳ございません。
    >
    > フォームにテキストボックスを配置して、テキストボックスの内容のタイトルを検索するWEBを作ろうとしていました。
    >
    > http://iss.ndl.go.jp/api/opensearch?title=%E3%83%9E%E3%83%AA%E3%83%BC%E3%82%A2%E3%83%B3%E3%83%88%E3%83%AF%E3%83%8D%E3%83%83%E3%83%88&ndc=2
    >
    > ここにアクセスすると、一番最初の<title>週刊100人 : 歴史は彼らによってつくられた</title>を延々と数十行も取得してしまうんです・・・
    >
    > でも
    >
    > Response.Write
    >
    > でフォームに書き込むと正常に表示されます・・・
    >
    > やりたいことは、XMLを1行ずつ取得して、データーベースに追加していくループなんです。わかりづらくてすみません。

    依然として意味が分かりません。あなたのやりたいことはなんですかと質問しているのですが無視ですか?
記事No.69859 のレス /過去ログ119より / 関連記事表示
削除チェック/

■69873  Re[6]: ASP.NETでのWEBのAPIにおけるXMLの取得について
□投稿者/ kazu -(2014/02/04(Tue) 02:03:21)
    なんども試しているんですね無理みたいですね。

    他の言語では実装済みなんですよ・・・

    ASP.NETでは無理なんだと思います。

    あとコミュニケーション能力を身につけたほうが良いと思いますよ。

    分からないことは分からないと言った方が周りに迷惑かけないと思うし。
記事No.69859 のレス / END /過去ログ119より / 関連記事表示
削除チェック/

■69878  Re[7]: ASP.NETでのWEBのAPIにおけるXMLの取得について
□投稿者/ 桜島 -(2014/02/05(Wed) 09:16:26)
    >そんな長いコードは読む気がしません。

    >一体あなたは何がしたいんですか?

    >依然として意味が分かりません。あなたのやりたいことはなんですかと質問しているのですが無視ですか?

    たしかにこりゃひどいわなw
記事No.69859 のレス / END /過去ログ119より / 関連記事表示
削除チェック/

■69879  Re[8]: ASP.NETでのWEBのAPIにおけるXMLの取得について
□投稿者/ WebSurfer -(2014/02/05(Wed) 10:36:58)
    No69878 (桜島 さん) に返信
    > >そんな長いコードは読む気がしません。
    >
    > >一体あなたは何がしたいんですか?
    >
    > >依然として意味が分かりません。あなたのやりたいことはなんですかと質問しているのですが無視ですか?
    >
    > たしかにこりゃひどいわなw

    あなたが質問者さんのやりたいことがわかると言うなら、回答を書いてはいかがですか?
記事No.69859 のレス /過去ログ119より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -