2017-09-03 84 views
0

我有3000個帶有書籍元數據的ONIX樣式xml URL。 我想過濾這些文件中的幾個節點,並將它們解析到單個工作表中的Excel行中。在Excel中批量過濾和解析ONIX數據(XML)

這是一個XML的路徑的一個示例: http://btsoep.appspot.com/rest/book/9789082516425

我想要過濾的東西,這個XML數據作爲

<Product> 
<Title> 
    <TitleText> 

​​

我所需要的檢索Excel工作表中的數據,每個網址都有自己的行。所以URL在A行,TitleText在B行,PersonName在C行。

我該怎麼做?

編輯1:

我已經試過到目前爲止: - 使用wget來先下載所有的XML數據,然後嘗試批量解析這是Excel。這可以工作,但沒有必要。 - 在Excel中使用默認的XMLimport函數。我似乎無法在一批中運行。

我沒有過濾XML文件和解析Excel工作表中的任何經驗。我不是要求任何人爲我解決這個問題,也不是爲我寫代碼,但我希望朝着好的方向邁出一步。哪種工具最適合這種情況?再次感謝。

+0

開始'VBA解析xml' ....你應該已經通過這裏 – jsotola

+0

發佈提問簡單的蛋糕......簡單循環做過URL列表並將xpath解析爲這些節點值,按行和列迭代地寫入單元格。 OP有所有的樂趣! – Parfait

+1

現在我們知道您需要什麼了,請告訴我們您到目前爲止所嘗試的內容。因爲(a)這不是免費的代碼編寫服務(b)要求如何實現某些內容而不涉及特定代碼問題的問題是無關緊要的。 –

回答

0

這應該讓你做互聯網搜索開始

Option Explicit 

Sub parseONIX() 

    Dim URL As String 

    URL = "http://btsoep.appspot.com/rest/book/9789082516425" 
' URL = "https://www.w3schools.com/xml/plant_catalog.xml" 

    Dim XMLPage As New MSXML2.XMLHTTP60 
    XMLPage.Open "GET", URL, False 
    XMLPage.send 

    Dim XMLDoc As New MSXML2.DOMDocument 
    XMLDoc.LoadXML XMLPage.responseText 

    Debug.Print XMLDoc.ChildNodes(0).BaseName 
    Debug.Print XMLDoc.ChildNodes(1).BaseName 
    Debug.Print XMLDoc.ChildNodes(1).ChildNodes(0).BaseName 
    Debug.Print XMLDoc.ChildNodes(1).ChildNodes(1).BaseName 
    Debug.Print XMLDoc.getElementsByTagName("Product").Item(0).BaseName 

    Dim i As Integer 

    For i = 0 To XMLDoc.getElementsByTagName("Measure").Length - 1 

     Debug.Print "type: "; XMLDoc.getElementsByTagName("Measure")(i).ChildNodes(0).Text, 
     Debug.Print XMLDoc.getElementsByTagName("Measure")(i).ChildNodes(1).Text, 
     Debug.Print XMLDoc.getElementsByTagName("Measure")(i).ChildNodes(2).Text 

    Next i 



End Sub