如何进行XML解析

时间:2012-09-22 07:46:41

标签: xml qtp

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

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

有人可以在这帮忙吗?

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

Is a valid XML file required xml header declaration