msxml Разбор ответа мыла с использованием MS DOM и классического asp - PullRequest
0 голосов
/ 04 ноября 2010

Я использую классический "ASP", не обманывайте меня. Просто еще не удалось перейти на .Net. Я только изучаю мыло и успешно создаю SOAP-запрос к веб-сервису. Однако я не могу понять, как проанализировать ответ и вытащить один узел. Я использую MS DOM для загрузки ответа в документ. Я могу получить ответ на экран. Я пробовал следующее, но я не могу получить доступ к любому node_text по отдельности.

'Set the XML Object 
Set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")

'Set Asynchoronous = false
xmlDoc.async = False

'Load the XML file.
'User Server.MapPath method is the XML is located in your site.
'Else you can use the absolute path.

xmlDoc.Load (strResult)

'If there is any errors pasring the file the notify

If xmlDoc.parseError.errorCode = 0 Then

Response.Write "Error Parsing XML"

Response.Write  "Rason :" & xmlDoc.parseError.reason & "Error Line: " & xmlDoc.parseError.line

End If

'Get ALL the Elements by the tag name book

Set sessionid = xmlDoc.getElementsByTagName("session_id")

'Now Iterate through the List and Display
response.write"sessionid ="&sessionid&"<BR>"
 For i = 0 to (sessionid.Length-1)
    Response.Write "session_id " & sessionid.item(i).childNodes(0).text  & "<br/>"

Next

Вот ответ, который я пытаюсь разобрать

<ns:getSessionResponse xmlns:ns="http://services.axis.openmeetings.org">
    <ns:return xmlns:ax217="http://basic.beans.data.app.openmeetings.org/xsd" 
               xmlns:ax218="http://basic.beans.hibernate.app.openmeetings.org/xsd" 
               type="org.openmeetings.app.hibernate.beans.basic.Sessiondata">
        <ax218:id>71</ax218:id>
        <ax218:language_id xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true" />
        <ax218:organization_id xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true" />
        <ax218:refresh_time>2010-11-04T15:17:13.717Z</ax218:refresh_time>
        <ax218:sessionXml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true" />
        <ax218:session_id>5f0415d9cdb72681816095debf3735de</ax218:session_id>
        <ax218:starttermin_time>2010-11-04T15:17:13.717Z</ax218:starttermin_time>
        <ax218:storePermanent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true" />
        <ax218:user_id xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true" />
    </ns:return>
</ns:getSessionResponse>

Мне нужно вытащить session_id из этой пары, но, похоже, я не могу это сделать. И да, я надеюсь перейти на .NET в ближайшее время.

1 Ответ

0 голосов
/ 10 ноября 2010

Если strResult является URL-адресом XML-файла, вы можете использовать:

xmlDoc.Load(strResult)

Но если strResult представляет содержимое xml, вам нужно использовать:

xmlDoc.LoadXML(strResult)

Для получения дополнительной информации, пожалуйста, обратитесь к MSDN .

...