Разобрать одну запись XML в классическом ASP - PullRequest
0 голосов
/ 07 сентября 2010

Я пытаюсь проанализировать одну запись XML без имени в ASP classic и у меня возникают проблемы с ее разрешением разрешить объект?

Вот что я пытаюсь:

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")

Ответы [ 2 ]

3 голосов
/ 07 сентября 2010

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");
0 голосов
/ 09 сентября 2010

Вот что я в итоге сделал - вместо использования HTTP-запроса DOMDocument я использовал 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 & "&parameters=" & 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
...