2013-10-07 2 views
0

Мне нужно сравнить 2 xml-файла с использованием QTP, где нужно сравнить значения для каждого тега и распечатать разницу в значениях, если они найдены. Я использовал встроенную функцию XMLUTIL, но она не работает, как ожидается, i.e .. создает файл с отличиями, включая родительский тег.Сравните два xml-файла с помощью VBS в QTP

<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 я просто нужно теги со значениями, как

ТНС: Источник со значением EPH, TNS: Accounting_Record_Reference со значением 130830000672401, TNS: OPF_Reference со значением EPH1308300006724 и ТНС: Group_Reference EPH1308300006723, а не родительские теги, такие как tns: Ссылки, tns: OPF_Information или tns: AAL_Request_NEW.

Может ли кто-нибудь помочь с логикой получить теги, у которых нет дочернего тега внутри, и заканчивается сразу же, имея только значение между его началом <> и заканчивая и сравнивая его с другим файлом и печатайте имя тега и значения, если есть разница?

ответ

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 

Спасибо и привет

+1

Что делать, если есть пропавшие/дополнительные теги? –