Avatar billede skovtrold Nybegynder
28. juni 2002 - 09:10 Der er 3 kommentarer og
1 løsning

XML via HTTP (ASP) ?

Hej

Normalt benytter jeg følgende kode til at hente XML-data og tilhørende XSLT via ASP:

set xml = Server.CreateObject("Microsoft.XMLDOM")
xml.async = false
xml.load(Server.MapPath("filnavn.xml"))
set xsl = Server.CreateObject("Microsoft.XMLDOM")
xsl.async = false
xsl.load(Server.MapPath("/ok02/xml/" & xslt_template & ".xsl"))
Response.Write(xml.transformNode(xsl))
set xml = Nothing
set xsl = Nothing

Men hvis XML-filen jeg skal bruge nu ligger på en anden server, f.eks. http://server/mappe/fil.xml , så duer ovenstående kode ikke. Hvordan kan jeg få samme resultat, bare med "eksterne" XML-data ?
Avatar billede Slettet bruger
28. juni 2002 - 09:20 #1
Brug ServerXMLHTTP til at hente filen med:

Set oXML = Server.CreateObject("MSXML2.ServerXMLHTTP")
oXML.Open("GET", "http://server/mappe/fil.xml", false)
oXML.Send

Herefter kan du bl.a. hente:

oXML.responseXML
oXML.responseText

/CS
Avatar billede skovtrold Nybegynder
28. juni 2002 - 09:35 #2
Den giver følgende fejl:
Microsoft VBScript compilation (0x800A0414)
Cannot use parentheses when calling a Sub
/xmlhttp/Default.asp, line 6, column 64
XML.Open("GET", "http://servernavn/http_test.xml", false)

(stien er udskiftet med "servernavn")
Avatar billede skovtrold Nybegynder
28. juni 2002 - 09:43 #3
PÅ basis af det du skrev, har jeg lavet følgende (som virker) så du får dine point :)

<%
Option Explicit
Dim ObjSXH, ObjXML, ObjXSL
'Using MSXML 3.0 ServerXMLHTTP Class   
Set ObjSXH = Server.CreateObject("Msxml2.ServerXMLHTTP.3.0")
'GET Request
ObjSXH.open _
  "GET", _
  "http://servernavn/http_test.xml", _
  False
'Send the request
ObjSXH.send ""
'If the request succeeded
If ObjSXH.status = 200 Then
      'returned XML as a DOMDocument
      Set ObjXML = ObjSXH.responseXML
      'Load the XSLT stylesheet
      Set ObjXSL = Server.CreateObject("Msxml2.DOMDocument.3.0")
      ObjXSL.load Server.MapPath("/xmlhttp/test.xsl")
      'Apply XSL Transformation and write the HTML result
      Response.Write (ObjXML.transformNode(ObjXSL))
Else
      Response.Write "An error occurred. Please try later."
End If%>
Avatar billede Slettet bruger
28. juni 2002 - 10:40 #4
Hehe - jeg bruger altid JavaScript, så der havde lige sneget sig et par parenteser ind dér... :-)

/CS
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