Vbscript / UFT, как получить имя элемента Tag для проверки Xpath элементов тега - PullRequest
0 голосов
/ 29 января 2019

Прикрепленный пример XML, в прикрепленном XML я хочу проверить наличие элементов тега для ex: PayloadList / IFXResp / IFX / GeneralStatus / StatusCode

было бы здорово, если кто-нибудь может помочь мне получить вышеуказанноекод xpath.Ищем код в vbscript / UFT для печати имени элемента тега

<?xmlversion="1.0" encoding="UTF-8"?>
<PayloadList>
<Payload>
  <IFXResp>
     <IFX>
        <GeneralStatus>
           <StatusCode>0</StatusCode>
           <StatusLevel>IFX</StatusLevel>
           <StatusDesc>The request was processed successfully.</StatusDesc>
        </GeneralStatus>
        <Status>
           <StatusCode>0</StatusCode>
           <Severity>Info</Severity>
           <StatusDesc>The request was processed successfully.</StatusDesc>
           <SupportUID>DD2B1DFF-57657657-6767-8013-C9787878AF00</SupportUID>
        </Status>
        <SignonRs>
     </IFX>
  </IFXResp>
</Payload>
</PayloadList>

1 Ответ

0 голосов
/ 29 января 2019

Следующий код напечатает true, если XPath /PayloadList/Payload/IFXResp/IFX/GeneralStatus/StatusCode существует, в противном случае возвращается false.

Option Explicit
Dim strXMLFilePath, strXPath
strXMLFilePath = "F:\test.xml"
strXPath = "/PayloadList/Payload/IFXResp/IFX/GeneralStatus/StatusCode"
MsgBox fn_readXML(strXMLFilePath,strXPath)

Function fn_readXML(strXMLFilePath, strXPath)
    Dim objXML, objNodes
    Set objXML = CreateObject("MSXML2.DomDocument")
    objXML.async= False
    objXML.load strXMLFilePath
    With objXML.parseError
        If .errorCode = 0 Then
            Set objNodes = objXML.selectNodes(strXPath)
            If objNodes.length > 0 Then
                fn_readXML = True
            Else
                fn_readXML = false
            End If
        Else
            MsgBox "Cannot parse the XML File!!!" & vbCrLf &_
                   "Error Code: " & .errorCode & vbCrLf &_
                   "Reason: " & .reason & vbCrLf &_
                   "Line: " & .line
        End If
    End With
    Set objXML = Nothing
End Function

Вы также можете использовать метод selectSingleNode вместо метода selectNodes, как показано нижевнутри функции:

Dim objNode
Set objNode = objXML.selectSingleNode(strXPath)
If objNode Is Nothing Then
    fn_readXML = False
Else
    fn_readXML = True
End If

Примечание: Ваш XML изначально имел ошибки.Закрывающего тега для тега <SignonRs> нет.Исправьте это перед запуском кода.

...