我正在尝试解析ASP经典中没有名称的单个XML条目,并且在将其解析为对象时遇到问题?
以下是我的尝试:
result = xmlDoc.selectSingleNode("//Boolean")
我也尝试过:
result = xmlDoc.selectSingleNode("//Boolean").Attributes.Text
他们都没有返回一个对象,这是我第一次使用XML而且我还没有弄清楚如何获取一个没有名字的对象。
以下是XML结果文件:
<boolean>true</boolean>
这是错误:
Microsoft VBScript runtime error '800a01a8'
Object required: 'xmlDoc.selectSingleNode(...)'
如何填充xmldoc:
set xmlDoc = createObject("MSXML2.DOMDocument")
xmlDoc.async = False
xmlDoc.setProperty "ServerHTTPRequest", true
url = "http://localhost:81/api/logging/Service.svc/xml/LogEvent?"
//Create the http string
url = url & "sessionId=" & sessionId
url = url & "source=" & source
url = url & "action=" & action
url = url & "parameters=" & parameters
xmlDoc.load(url)
result = xmlDoc.selectSingleNode("//Boolean")
答案 0 :(得分:3)
XML区分大小写,XPath也是如此。尝试:
Set result = xmlDoc.selectSingleNode("//boolean")
另外,请注意Set
语句,对象分配是必要的。
此外,您必须在继续之前检查选择操作是否成功:
If Not result Is Nothing Then
boolValue = CBool(result.nodeValue)
End If
CBool()
了解"true"
和"false"
,但会为其他字符串引发类型不匹配错误。
对于早期的MSXML版本,您还需要首先将选择语言设置为XPath。
xmlDoc.setProperty("SelectionLanguage", "XPath");
答案 1 :(得分:0)
这是我最终做的 - 而不是使用DOMDocument HTTPRequest我使用了Msxml2.ServerXMLHTTP。无论出于何种原因,我都无法使用responseXML,因为它没有作为XML返回 - 但是responseText运行得很好,因为我总是在布尔值中返回“true”或“false”。
Set objXmlHttp = Server.CreateObject("Msxml2.ServerXMLHTTP")
'Build the url string
url = url & "pki=" & LOGGING_PKI
url = url & "&sessionId=" & sessionId
url = url & "&source=" & source
url = url & "&action=" & action
'Clean parameters string
parameters = Replace(parameters,"&", "%26")
url = url & "¶meters=" & parameters
' Send http request
objXmlHttp.open "GET", url, False
objXmlHttp.send
'Check response
strHTML = objXmlHttp.responseText
Set objXmlHttp = Nothing
'If responseText = true then logging was successful
if instr(strHTML, "true") <> "" then
logEvent = true
else
logEvent = false
end if