1

ホーム ライブラリ データベース プログラムを作成しようとしています。私はバーコード スキャナーを持っており、書籍の ISBN をオンラインで調べて、タイトルと著者を Microsoft Access ファイルに追加できるようにしたいと考えています。以下を除いて、コードのすべての部分が機能しています。

Public Sub XMLStuff()
For i = 0 To UBound(aryISBN) - 1
        ' If the ISBN exists
        If (aryISBN(i).Chars(1) <> "#") Then
            GETXML(i, aryISBN)
            ReadXML(Title, Author, intCount)
        Else
            MsgBox("this is not a valid isbn")
        End If
    Next

End Sub


Public Sub GETXML(ByVal i As Integer, ByVal aryISBN As String())
    Dim accessKey As String = "NUMBER"
    ' URL for isbndb.com API
    Dim url As String = ("https://isbndb.com/api/books.xml?access_key=" + accessKey + "&results=texts&index1=isbn&value1=" + aryISBN(i))
    ' Create new XML reader from URL
    Dim reader As XmlTextReader = New XmlTextReader(url)

    ' Delete XML file if it already exists
    If System.IO.File.Exists(FILE_NAME) Then
        My.Computer.FileSystem.DeleteFile(FILE_NAME)
    End If

    Dim objWriter As New System.IO.StreamWriter(FILE_NAME, False)

    ' Write entire XML output to file
    Do While (reader.Read())
        Select Case reader.NodeType
            Case XmlNodeType.Element 'Display beginning of element.
                objWriter.Write("<" + reader.Name)
                objWriter.WriteLine(">")
            Case XmlNodeType.Text 'Display the text in each element.
                objWriter.WriteLine(reader.Value)
            Case XmlNodeType.EndElement 'Display end of element.
                objWriter.Write("</" + reader.Name)
                objWriter.WriteLine(">")
        End Select
    Loop
    objWriter.Close()
    reader.Close()
End Sub

配列に 2 つの有効な ISBN がある場合、最初の配列は常に完全な XML を返しますが (次の最初の例)、2 番目の ISBN は常に間違った XML を返します (次の 2 番目の例)。ブラウザーで各 ISBN コードを直接テストしたので、2 回目にどの XML を返す必要があるかがわかります。ループに何か問題がありましたか?

<ISBNdb>
<BookList>
<BookData isbn="1612510248">
<Title>...</Title>
<TitleLong>...</TitleLong>
<AuthorsText>...</AuthorsText>
</BookData>
</BookList>
</ISBNdb>

<ISBNdb>
<BookList>
</BookList>
</ISBNdb>
4

0 に答える 0