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