如何使用VBA从ISBNDB.com API中提取XML数据?

时间:2013-06-24 15:37:27

标签: xml vba xml-parsing xmlhttprequest access-vba

我以前从未使用过XML,而且我一直试图在网上拼凑一些东西,但我无处可去(并且不止一种方式!)

我正在尝试设置一个vba模块,当有人单击Access窗体上的按钮时,该模块将运行。该函数将使用传递的ISBN#和ISBNDB.com API返回书籍的不同属性。

我已经获得了API的访问字符串: https://isbndb.com/api/books.xml?access_key=NSOY388Z&results=texts&index1=isbn&value1=0007102968

我需要知道如何使用数据来解析返回到我的某个表中的内容,例如Title,Author,Publisher等。

以下是我的访问字符串返回的可视树:

任何人都可以帮助我吗?如上所述,我一直试图将这个过程从网络中分离出来,而且一点都没有了。

1 个答案:

答案 0 :(得分:2)

您可以从URL加载XML DOM文档,然后使用其方法从所选节点访问文本。以下示例使用XPath来标识节点,但也可以使用其他方法:getElementsByTagName; SelectNodes;等

我用后期绑定编写了这个示例。在浏览文档方法和属性时,您可能更喜欢使用早期绑定进行开发...为 Microsoft XML 设置引用。

Dim strUrl As String
Dim strXPathBase As String

' early binding requires reference to Microsoft XML
'Dim objDoc As MSXML2.DOMDocument
'Set objDoc = New MSXML2.DOMDocument

' late binding, no reference required
Dim objDoc As Object
Set objDoc = CreateObject("MSXML2.DOMDocument")

strUrl = "https://isbndb.com/api/books.xml" & _
    "?access_key=NSOY388Z&results=texts" & _
    "&index1=isbn&value1=0007102968"

objDoc.async = False
objDoc.Load strUrl

strXPathBase = "//ISBNdb/BookList/BookData/"
Debug.Print "Title: " & _
    objDoc.SelectSingleNode(strXPathBase & "Title").Text
Debug.Print "Publisher: " & _
    objDoc.SelectSingleNode(strXPathBase & "PublisherText").Text

Set objDoc = Nothing