这是我的示例XML文件:
<Cars>
<Make name="Maruthi">
<Model>
<Name>Wagnor</Name>
<Release>2000</Release>
</Model>
</Make>
<Make name="Maruthi">
<Model>
<Name>Swift</Name>
<Release>2005</Release>
</Model>
</Make>
<Make name="Hundai">
<Model>
<Name>i10</Name>
<Release>2003</Release>
</Model>
</Make>
</Cars>
我想要检索Make Name为= Maruthi的所有汽车(所以我在这里期待两辆车中的两辆)
Set o_XML=XMLUtil.CreateXMLFromFile("E:\Programming Samples\QTP Samples\Cars.xml")
set o_ChildPath=o_XML.ChildElementsByPath("/Cars/Make/[name='Maruthi']")
'这里XMLUtil是QTP提供的实用程序对象,但我没有看到任何问题。
唯一的问题是评估表达式。我尝试了不同的表达式,但我得到“表达式必须对节点集进行评估”。
有人可以在这帮忙吗?
答案 0 :(得分:1)
为什么不使用JAXB解析器。它将为您获取汽车对象列表,然后您可以检索所有“Maruthi”制造的汽车。
答案 1 :(得分:1)
看起来好像是在尝试将XPath表达式传递给ChildElementsByPath
。如果它接受XPath(抱歉,我不使用该工具但无法在Web上找到文档),您希望表达式为/Cars/Make[name='Maruthi']
(删除最后一个斜杠)。如果它不接受XPath,您可能希望使用/Cars/Make
并使用您自己的代码来过滤掉不需要的品牌。
答案 2 :(得分:0)
也许您需要一个XML标头? 你可以在这里阅读: