2013-06-24 42 views
1

我從來沒有與XML合作過,雖然我一直在想的東西拼湊上了網,我越來越行不通(在不止一個方面!)如何使用VBA從ISBNDB.com API提取XML數據?

我試圖建立一個VBA模塊,可以當有人點擊訪問表單上的按鈕時運行。該函數將使用通過的ISBN#和ISBNDB.com API返回該書的不同屬性。

我已經得到了我的API訪問字符串:https://isbndb.com/api/books.xml?access_key=NSOY388Z&results=texts&index1=isbn&value1=0007102968

我需要知道如何去使用數據解析什麼是返回到我的表,如標題之一,作者,出版商等

這裏是我的訪問字符串返回的可視化樹:

誰能幫助我這個?如上所述,我一直試圖從網絡中整合這個過程,並且我絕對沒有辦法。

+2

嘗試啓用對「Microsoft XML,v6.0」的引用。這爲您提供了一個很好的對象模型,而不是試圖將XML解析爲普通的字符串數據。我只用過一次或兩次,所以我不能提供更多的幫助,但是這是我開始的地方,使用DOM文檔來讀取XML而不是字符串解析。 –

回答

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