Avatar billede donslund Nybegynder
28. august 2009 - 08:16 Der er 15 kommentarer og
1 løsning

Læse XML

Jeg har, med simpel asp, hentet noget indhold via en webservice.
Det har jeg nu i ws.response i form af noget XML.

Hvordan får jeg asp til at læse XMLindholdet?

Jeg er ikke pokkers stærk i asp, men har forsøgt med lidt eksempler.

Dim XMLDoc, rootNode, Visitor, Felt, Counter
    Set XMLDoc = Server.CreateObject("Microsoft.XMLDOM")
    XMLDoc.async = False
    XMLDoc.load(ws.response)
    Counter = -1
    Set rootNode = XMLDoc.documentElement
    If rootNode.hasChildNodes() then 

dette fejler ved 'If rootNode.hasChildNodes() then  '

Nogen forslag?
Avatar billede keysersoze Guru
28. august 2009 - 09:40 #1
Avatar billede donslund Nybegynder
02. september 2009 - 08:44 #2
Det er en fin artikel.

Men når jeg nu har en asp-side der henter XML'en fra en webservice, burde jeg så ikke kunne skrive

doc.Load(Server.MapPath("xml.asp"))

Det brokker den sig over

Microsoft VBScript runtime  error '800a01a8'
Object required: ''
/aal/Default.asp, line 10
Avatar billede donslund Nybegynder
02. september 2009 - 11:48 #3
Okay, nu fejler den ikke nu er det bare som om den ikke vil hente filen.
Hvad kan man teste om den har adgang til filen?

doc.Load(Server.MapPath("/xml.asp"))
doc.Load(Server.MapPath("xml.asp"))
doc.Load("xml.asp")
doc.Load("http://sub.domain.dk/xml.asp"))
Avatar billede keysersoze Guru
02. september 2009 - 19:01 #4
Den kode du benytter kræver at den fil der loades er XML - og en webservice er ikke en xml-fil du kan hente data ud fra - så skal du hente fra en webservice skal du ud i noget lidt andet, fx http://www.aspfree.com/c/a/ASP/Consuming-a-WSDL-Webservice-from-ASP/
Avatar billede donslund Nybegynder
04. september 2009 - 15:10 #5
men det xml.asp genererer er valid XML, duer det så ikke?
Avatar billede keysersoze Guru
05. september 2009 - 09:46 #6
hvis du henter fra en xml.asp-fil så jo - men så er det heller ikke en webservice i den forstand. Hvis det så ikke virker med noget af det du skrev i #3 må du komme med lidt mere info.
Avatar billede donslund Nybegynder
05. september 2009 - 11:49 #7
xml.asp henter XML via en webservice.
Tilgår man filen xml.asp skriver browseren korrekt xml ud.

I default.asp har jeg nedenstående kode:

<%' opret DOM træ
Set doc = CreateObject("MSXML.DOMDocument")
' indlæs XML fil i DOM træ
doc.Async = False
doc.Load(Server.MapPath("xml.asp"))
'doc.Load(Server.MapPath("test.xml"))
' find alle medlem elementer
Set medlemmer = doc.GetElementsByTagName("Attachments")
For Each medlem in medlemmer
    Response.Write "<tr>" & vbCrLf
    ' find og udskriv attribut no
    '    Response.Write "<td>" & medlem.Attributes.GetNamedItem("no").Value & "</td>" & vbCrLf
    ' find alle under elementer   
    For Each elm in medlem.ChildNodes       
        For Each elms in elm.ChildNodes       
            ' find under element navn       
            If(elms.NodeName = "ContentType") Then navn = elms.FirstChild.NodeValue
            ' find under element adresse
            If(elms.NodeName = "Id") Then adresse = elms.FirstChild.NodeValue
        Next
    ' udskriv de fundne under elementer
    Response.Write navn & vbCrLf
    Response.Write adresse & vbCrLf
    Response.Write "<br>" & vbCrLf
    Next
Next
    ' cleanup
    Set medlemmer = Nothing
    Set doc = Nothing
Response.write("slut")
%>

Det eneste der kommer ved at tilgå default.asp er 'slut' som skrives i sidste linie.

Som test har jeg taget det der kommer ud i xml.asp og lagt i test.xml. Hvis det er den jeg tilgår, så virker det fint. Derfor antager jeg at det er doc.Load(Server.MapPath("xml.asp")) det er galt med.
Avatar billede keysersoze Guru
05. september 2009 - 13:18 #8
bliver indholdet i asp-filen serveret som tekst eller som xml - altså hvilken content-type?
Avatar billede donslund Nybegynder
05. september 2009 - 13:26 #9
Avatar billede keysersoze Guru
05. september 2009 - 14:13 #10
det ligner ikke særlig meget XML hvis du ser det i fx FireFox - sørg for at sende det med en korrekt xml content-type.
Avatar billede donslund Nybegynder
05. september 2009 - 14:43 #11
xmlhttp.setRequestHeader "Content-Type","application/x-www-form-urlencoded; Charset=utf-8"

Dette er den content-type der er nu. Men det er så forkert kan jeg forstå.

xmlhttp.setRequestHeader "Content-Type","text/xml; Charset=utf-8" ser heller ikke rigtig ud til at fungere.
Avatar billede keysersoze Guru
05. september 2009 - 15:43 #12
det er din asp-fil der skal have den rigtige content-type;

response.ContentType = "text/xml"
Avatar billede donslund Nybegynder
05. september 2009 - 15:52 #13
ja, så langt, så godt.
Nu ligner det jo også xml i FireFox :-)

Men det giver ikke andet output i default.asp. Stadig kun "slut"
Avatar billede keysersoze Guru
06. september 2009 - 14:10 #14
Du må prøve at debugge dig lidt igennem - fx se hvad der bliver loadet ind hvis noget overhovedet og se hvad der sker hvis du ændrer på GetElementsByTagName.
Avatar billede keysersoze Guru
29. december 2009 - 11:25 #15
lukketid?
Avatar billede donslund Nybegynder
29. december 2009 - 21:12 #16
Ja, i aller højeste grad.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester