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

Прикрепленный образец XML, в прикрепленном XML я хочу проверить наличие элементов тега, например: 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 ответ

Решение

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

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>, Исправьте это перед запуском кода.

Другие вопросы по тегам