0

这是我的示例 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 提供的实用程序对象,但我没有看到任何问题。

唯一的问题是评估表达式。我尝试了不同的表达式,但我得到“表达式必须评估为节点集”。

有人可以在这里帮忙吗?

4

3 回答 3

1

看起来好像您正在尝试将 XPath 表达式传递给ChildElementsByPath. 如果它接受 XPath(抱歉,我不使用该工具并且在 Web 上找不到文档),您希望表达式为/Cars/Make[name='Maruthi'](删除最后一个斜杠)。如果它不接受 XPath,您可能希望使用/Cars/Make并使用您自己的代码来过滤掉不需要的品牌。

于 2012-09-22T18:49:30.973 回答
1

为什么不使用 JAXB 解析器。它会为您获取汽车对象列表,然后您可以检索“Maruthi”品牌的所有汽车。

于 2012-09-22T07:54:38.823 回答
0

也许您需要一个 XML 标头?你可以在这里阅读:

是否需要有效的 XML 文件 xml 标头声明

于 2012-09-22T07:59:43.653 回答