VBA를 사용하여 MSXML2 및 XPath로 비누 xml을 구문 분석하지만 selectNodes 메서드에서 XPath 쿼리가 다양한 도구에서 작동하는 동안 아무 것도 선택하지 않습니다. 지금까지 본 많은 질문에서 수집 한 것부터 네임 스페이스를 지정하는 대신이 'local-name'구문을 사용할 수 있지만 아무것도 선택하지 않습니다. 내가 도대체 뭘 잘못하고있는 겁니까?XPath가 MSXML2와 함께 실패 함
private const DQ = """"
Public Sub parseXML(sFileName As String)
Dim xmldoc As New MSXML2.DOMDocument60, I As IXMLDOMNodeList, x As IXMLDOMNode
With xmldoc
.loadXML sFileName
.SetProperty "SelectionLanguage", "XPath"
Set I = .selectNodes("//*[local-name()=" & DQ & "item" & DQ & "]")
If I.length > 0 Then
' do something useful
end if
End With
End Sub
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Header></soap-env:Header>
<soap-env:Body>
<n0:ZBexQaasResponse xmlns:n0="urn:sap-com:document:sap:soap:functions:mc-style">
<Messages>
<item>
// some elements
</item>
</Messages>
<OutputTable>
<item>
// some elements
</item>
</OutputTable>
<TextElements></TextElements>
<XmlOutput></XmlOutput>
<XmlTxtelem></XmlTxtelem>
</n0:ZBexQaasResponse>
</soap-env:Body>
</soap-env:Envelope>
'loadXML' 호출 후에'.parseError.errorCode'와'.parseError.reason'을 확인하십시오. 그리고'loadXML sFileName'은 틀린 것처럼 보입니다.'loadXML' 메쏘드는 파일 이름이 아닌 XML 문서 마크 업과 함께 문자열을 기대합니다. 파일 이름을 가지고 있다면'load' 메쏘드를 사용하십시오 ('.async = False' 설정 후에). –
sFilename = 텍스트 파일로 비누 데이터. '.pareseError.ErrorCode'와'.parseError.reason'은 각각'-1072896682'와'문서의 최상위 레벨에서 무효 '를 반환했습니다. 대신에'.load '메쏘드를 사용하면 오류는 없지만 노드는 찾을 수 없습니다. – Todd