【发布时间】:2015-06-19 08:41:37
【问题描述】:
我正在尝试将 XML 响应中的数据导入 Excel 工作表,但在单个父节点下重复子节点时遇到了困难。我需要能够为每个类别导入 CategoryID、CategoryName 和 CategoryParentName 行。我已经能够获得前两个,但无法弄清楚 CategoryParentName 自重复以来。 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
【问题讨论】: