在QTP中使用VBS比较两个xml文件

时间:2013-10-07 12:25:34

标签: vbscript qtp hp-uft

我需要使用QTP比较2个xml文件,其中需要比较每个标记的值,如果找到则需要打印值的差异。我使用了内置函数 XMLUTIL ,但它没有按预期工作,即它创建了一个包含父标记的差异文件。

<tns:AAL_Request_NEW xsi:schemaLocation="http://www.bnymellon.com/AAL_Request_NEW  AAL_Request_NEW.xsd">
  <tns:OPF_Information>
    <tns:Source>
      <tns:Source>EPH</tns:Source>
    </tns:Source>
    <tns:References>
      <tns:Accounting_Record_Reference>130830000672401</tns:Accounting_Record_Reference>
      <tns:OPF_Reference>EPH1308300006724</tns:OPF_Reference>
      <tns:Group_Reference>EPH1308300006723</tns:Group_Reference>
    </tns:References>
  </tns:OPF_Information>
</tns:AAL_Request_NEW>

在上面的xml文件中,我只需要像

这样的值的标签

tns:值为 EPH 的源,tns:Accounting_Record_Reference,值为130830000672401,tns:OPF_Reference,值为EPH1308300006724,tns:Group_Reference为EPH1308300006723,而不是像tns这样的父标签:引用,tns: OPF_Information或tns:AAL_Request_NEW。

任何人都可以帮助获取其中没有子标记的标记的逻辑,并立即在其start&lt;&gt;之间只有一个值结束。并结束并将其与其他文件进行比较,如果存在差异,则打印标签名称和值?

1 个答案:

答案 0 :(得分:0)

您可以使用CreateObject(“Microsoft.XMLDOM”)读取xml文件并按标记名称检索标记并将它们分开。

Set objXMLDoc = CreateObject("Microsoft.XMLDOM") 
objXMLDoc.async = False 
objXMLDoc.load("<XML PATH>")

Set Root = objXMLDoc.documentElement 
Set tags = root.tagnames
Set NodeList = Root.getElementsByTagname("<node name>")
For Each Elem In NodeList 
msgbox  Elem.text
Next

谢谢和问候