我试图使用VBScript在XML中获取一些节点值。如果我使用以下脚本的普通XML,那么它正确地获取预期的节点值。但是,如果我使用具有命名空间的SOAP响应,那么下面的脚本会在突出显示的行中抛出以下错误:
对象要求:' nNode'
脚本:
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.Load editName
xmlDoc.SetProperty "SelectionNamespaces", "xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/' xmlns:sch='http://www.exchangerate.com/webservices/schemas' xmlns:xbe='http://www.exchangerate.com/rate'"
Set nNode = xmlDoc.SelectSingleNode(tag)
objSheet.Cells(i, Column).value = nNode.text '<-- this fails
strResult = xmlDoc.Save(editName)
我该如何解决这个问题?
示例响应XML:
输入:
tag="/SOAP-ENV:Envelope/SOAP-ENV:Body/sch:Request/sch:Response/xbe:ConversionRateResult"
答案 0 :(得分:1)
我们必须使用相对Xpath来解析SOAP Response,并且通过使用相对Xpath作为tag =“// xbe:ConversionRateResult”来解决上述问题。