2015-06-19 30 views
1

我試圖從XML響應導入數據到Excel表中,並且在單個父節點下重複的子節點有困難。我需要能夠爲每個類別導入CategoryID,CategoryName和CategoryParentName行。我已經能夠得到前兩個,但不能找出CategoryParentName,因爲它重複。 XML如下。VBA在單個父節點下導入多個XML子項

<GetSuggestedCategoriesResponse xmlns="urn:ebay:apis:eBLBaseComponents"> 
 
    <Timestamp>2010-01-19T22:08:02.568Z</Timestamp> 
 
    <Ack>Success</Ack> 
 
    <Version>647</Version> 
 
    <Build>E647_CORE_BUNDLED_10438248_R1</Build> 
 
    <SuggestedCategoryArray> 
 
    <SuggestedCategory> 
 
     <Category> 
 
     <CategoryID>18871</CategoryID> 
 
     <CategoryName>Memory Cards</CategoryName> 
 
     <CategoryParentID>625</CategoryParentID> 
 
     <CategoryParentID>3327</CategoryParentID> 
 
     <CategoryParentID>18866</CategoryParentID> 
 
     <CategoryParentName>Cameras & Photo</CategoryParentName> 
 
     <CategoryParentName>Camera Accessories</CategoryParentName> 
 
     <CategoryParentName>Digital Camera Accessories</CategoryParentName> 
 
     </Category> 
 
     <PercentItemFound>4</PercentItemFound> 
 
    </SuggestedCategory> 
 
    <SuggestedCategory> 
 
     <Category> 
 
     <CategoryID>48629</CategoryID> 
 
     <CategoryName>Color</CategoryName> 
 
     <CategoryParentID>293</CategoryParentID> 
 
     <CategoryParentID>14948</CategoryParentID> 
 
     <CategoryParentID>48633</CategoryParentID> 
 
     <CategoryParentID>48638</CategoryParentID> 
 
     <CategoryParentID>48628</CategoryParentID> 
 
     <CategoryParentName>Electronics</CategoryParentName> 
 
     <CategoryParentName>Gadgets</CategoryParentName> 
 
     <CategoryParentName>Surveillance</CategoryParentName> 
 
     <CategoryParentName>Surveillance Cameras</CategoryParentName> 
 
     <CategoryParentName>Wired Cameras</CategoryParentName> 
 
     </Category> 
 
     <PercentItemFound>4</PercentItemFound> 
 
    </SuggestedCategory>

這裏是我的VBA代碼的嘗試。任何幫助是極大的讚賞!

Sub CategoryResponse() 
 
Outputrow = Sheet1.Range("E1") + 7 
 
     
 
Nodes = "GetSuggestedCategoriesResponse/SuggestedCategoryArray/SuggestedCategory" 
 
For Each CAT In responseItem.SelectNodes(Nodes) 
 
    Outputcol = 3 
 
    Sheet1.Range("A" & Outputrow).Value = CAT.SelectSingleNode("PercentItemFound").Text 
 
    Sheet1.Range("B" & Outputrow).Value = CAT.SelectSingleNode("Category/CategoryID").Text 
 
     
 
    Nodes1 = "GetSuggestedCategoriesResponse/SuggestedCategoryArray/SuggestedCategory/CategoryParentName" 
 
    For Each PAR In responseItem.SelectNodes(Nodes1) 
 
     Sheet1.Cells(Outputrow, Outputcol).Value = PAR.SelectSingleNode("CategoryParentName").Text 
 
     Outputcol = Outputcol + 1 
 
    Next PAR 
 
    
 
    Sheet1.Cells(Outputrow, Outputcol).Value = UST.SelectSingleNode("Category/CategoryName").Text 
 
    Outputrow = Outputrow + 1 
 
Next UST 
 

 
End Sub

回答

1

Nodes1相對應在For Each CAT ...環路創建的,在當前節點,而不是相對於responseItem。請嘗試:

Nodes1 = "Category/CategoryParentName" 
For Each PAR In CAT.SelectNodes(Nodes1) 
    Sheet1.Cells(Outputrow, Outputcol).Value = PAR.Text 
    Outputcol = Outputcol + 1 
Next PAR 

您想要選擇與當前SuggestedCategory節點相關的CategoryParentName節點。您的原始代碼將返回所有的CategoryParentNames(與selectNodes表達式匹配),無論它們與哪個SuggestedCategory節點相關

+1

謝謝!我可以看到我現在做錯了什麼。代碼完美工作。老實說這個項目是我第一次編寫除arduino和labview之外的代碼,所以我非常感謝幫助! –

相關問題