是否有更优雅的方式在Xpath类型命令中添加变量? (VBA)

时间:2016-03-01 00:29:46

标签: xml vba parsing

我有一个Xpath类型命令,我希望命令中嵌入的[i]是一个可变的整数...

Set ActiveASIN = objxmldoc.selectSingleNode("//ns1:GetLowestOfferListingsForASINResult[i]/ns1:Product/ns1:Identifiers/ns1:MarketplaceASIN/ns1:ASIN")

但我能让这个工作的唯一方法就是在块和块中构建上面的命令。然后连接....根本不优雅....

firstpart = "//ns1:GetLowestOfferListingsForASINResult[" + CStr(i) + "]"
secondpart = "/ns1:Product/ns1:Identifiers/ns1:MarketplaceASIN/ns1:ASIN"
complete = firstpart + secondpart
Set ActiveASIN = objxmldoc.selectSingleNode(complete)

...这只是我不知道正确语法的情况,还是必须像上面那样完成?

2 个答案:

答案 0 :(得分:0)

我能想到的唯一选择是使用objxmldoc.selectNodes()选择所有节点(不使用[i])到节点列表中,然后使用集合的索引来获取所需的项目。 / p>

这样的事情:

Set ASINNodes = objxmldoc.selectNodes("//ns1:GetLowestOfferListingsForASINResult/ns1:Product/ns1:Identifiers/ns1:MarketplaceASIN/ns1:ASIN")
Set ActiveASIN = ASINNodes(i)

根据您的XML以及您需要检索的数量,它可能比您自己的解决方案效率更高或更低。

答案 1 :(得分:0)

如果你想要的只是简化你的代码,我建议:

Set ActiveASIN = objxmldoc.selectSingleNode( _
                 "//ns1:GetLowestOfferListingsForASINResult[" & i & "]" & _
                 "/ns1:Product/ns1:Identifiers/ns1:MarketplaceASIN/ns1:ASIN")