webForumDet fria alternativet

hämta xml via http?

13 svar · 866 visningar · startad av Vide

VideMedlem sedan dec. 19996 094 inlägg
#1

Hejsan, håller på och testar lite... det är så att jag använder ASPs inbyggda parser för att presentera XML-filen mha en XSL-fil.

Nuvarande kod:

sourceFile = Request.ServerVariables("Appl_physical_path") & "xml\contacts.xml"
styleFile = Request.ServerVariables("Appl_physical_path") & "xml\contacts.xsl"

Set source = Server.CreateObject("Microsoft.XMLDOM")
source.async = false
source.load(sourceFile)

Set style = Server.CreateObject("Microsoft.XMLDOM")
style.async = false
style.load(styleFile)

HTMLcode = source.transformNode(style)
Response.write HTMLcode

Jag vill alltså göra såhär:

sourceFile = "http://www.lurgoyf.com/xml/contacts.xml"
styleFile = Request.ServerVariables("Appl_physical_path") & "xml\contacts.xsl"

Set source = Server.CreateObject("Microsoft.XMLDOM")
source.async = false
source.load(sourceFile)

Set style = Server.CreateObject("Microsoft.XMLDOM")
style.async = false
style.load(styleFile)

HTMLcode = source.transformNode(style)
Response.write HTMLcode

Men det fungerar inte. Hur skall jag gå tillväga?

------------------
Vide rox = new Vide();
rox.learn("C#");

webeye.nu

MattiasWMedlem sedan jan. 2000143 inlägg
#2

Så här gör jag i Delphi. Använder samma COM objekt som du gör i ASP, lite annan syntax bara:
Jag använder XMLHTTPRequest för att först hämta XML’en från en URL.

XMLHTTP:= CoXMLHTTPRequest.Create;
XMLHTTP.open('GET', 'http://www.slashdot.org/slashdot.xml', False, Unassigned, Unassigned);

XMLHTTP.setRequestHeader('Content-type', 'text/xml');		// Describe what we are expecting.
XMLHTTP.send(Unassigned);	// Go get it.

XMLDoc:= CoDomDocument.Create;
XMLDoc.async:= False;
XMLDoc.loadXML(XMLHTTP.ResponseText);

Blir väl ungefär så här i ASP:

Set XMLHTTP = Server.CreateObject("Microsoft.XMLHTTPRequest")
XMLHTTP.open('GET', 'http://www.slashdot.org/slashdot.xml', False);
XMLHTTP.setRequestHeader('Content-type', 'text/xml');		' Describe what we are expecting.
XMLHTTP.send();	' Go get it.

Set XMLDoc = Server.CreateObject("Microsoft.XMLDOM")
source.async = false
source.loadXML(XMLHTTP.ResponseText)
VideMedlem sedan dec. 19996 094 inlägg
#3

Tackar... men han verkar inte kunna skapa objektet XMLHTTPRequest, är det något som har implementerats i verison 4 av MSXML?

------------------
Vide rox = new Vide();
rox.learn("C#");

webeye.nu

MattiasWMedlem sedan jan. 2000143 inlägg
#4

Ursäkta mig.

Jag hittade denna kod-snutt från MSDN

The following code snippet comes from a VBScript file and illustrates simple interaction between a client application and a URL—in particular, an ASP page: 

Set xmlhttp = CreateObject("Microsoft.XMLHTTP")
xmlhttp.open "GET", "http://expoware/test.asp", False

xmltext = "<magazine>MIND</magazine>"
Set xmldom = CreateObject("Microsoft.XMLDOM")
xmldom.loadXML xmltext
xmlhttp.send xmldom

MsgBox xmlhttp.responseText

Heter tydligen Microsoft.XMLHTTP istället för Microsoft.XMLHTTPRequest.

Där ser man

VideMedlem sedan dec. 19996 094 inlägg
#5

Hmm... det objektet fanns... men sidan visas utan själva innehållet (XMLfilen) som skall formateras av min XSL-fil.

Några tips om tutorialer i ämnet HTTP med XML?

Tack för hjälpen hitintills... :)

------------------
Vide rox = new Vide();
rox.learn("C#");

webeye.nu

MattiasWMedlem sedan jan. 2000143 inlägg
#6

Jag sökte på efter "XMLHTTPRequest" på msdn.microsoft.com och hittade denna sida http://msdn.microsoft.com/library/periodic/period00/cutting0400.htm

Du kan även läsa om IXMLHTTPRequest på denna sida http://msdn.microsoft.com/library/psdk/xmlsdk/xmld8bp0.htm

Har du prova att skriva ut innehållet från "http://www.lurgoyf.com/xml/contacts.xml" utan att köra det genom XMLDOM?

VideMedlem sedan dec. 19996 094 inlägg
#7

Jag har testat att skriva ut innehållet och då skapas sidan korrekt (utan XSL).

Men hur går jag härifrån, när jag använder XMLDOM så laddar man ju en fil, men nu vill jag ju köra en sträng genom XSL-parsern.

*letar vidare*

------------------
Vide rox = new Vide();
rox.learn("C#");

webeye.nu

emissionMedlem sedan dec. 19996 095 inlägg
#8

set objXMLHTTP = Server.CreateObject("Microsoft.XMLHTTP")

objXMLHTTP.open "GET","http://www.lurgoyf.com/xml/contacts.xml",false

set source = objXMLHTTP.responseXML

osv..

VideMedlem sedan dec. 19996 094 inlägg
#9

Självklart... :e

Tackar så mycket för hjälpen båda två... :)

------------------
Vide rox = new Vide();
rox.learn("C#");

webeye.nu

daPhilMedlem sedan apr. 2001151 inlägg
#10

emission skrev:

set objXMLHTTP = Server.CreateObject("Microsoft.XMLHTTP")

objXMLHTTP.open "GET","http://www.lurgoyf.com/xml/contacts.xml",false

set source = objXMLHTTP.responseXML

osv..

Vadå "osv.."? Hur får jag in XSL referensen i koden?

SPiNMedlem sedan mars 20005 832 inlägg
#11

Ur Vides första inlägg:

Set style = Server.CreateObject("Microsoft.XMLDOM")
style.async = false
style.load(styleFile)

HTMLcode = source.transformNode(style)

source och style är objekt av typen Microsoft XMLDOM, med metoden transformNode() kan du använda ditt XSL-dokument ( style ) mot XML-filen ( source ).

daPhilMedlem sedan apr. 2001151 inlägg
#12

Jag får det absolut inte att funka.

set objXMLHTTP = Server.CreateObject("Microsoft.XMLHTTP")
	objXMLHTTP.open "GET","http://123.123.123.123:8000/admin.cgi?mode=viewxml",false, "xxxx", "xxxx"
	set sourceFile = objXMLHTTP.responseXML

	styleFile = Server.Mappath("template.xsl")
	
	Set source = Server.CreateObject("Microsoft.XMLDOM")
	source.async = false
	source.load(sourceFile)
	
	Set style = Server.CreateObject("Microsoft.XMLDOM")
	style.async = false
	style.load(styleFile)
	
	HTMLcode = source.transformNode(style)
	Response.write HTMLcode

En blank sida är allt jag får. URLen till XMLen stämmer. XSL dokumentet är rätt.

daPhilMedlem sedan apr. 2001151 inlägg
#13

Jag fixade det ändå.. Här ifall någon vill ha:

<%
	'Manuella variabler
	ServerDomain = 	"www.x.com" 	'Domän
	ServerPass =	"xxxx"					'Lösenord
	ServerPort =	"xxxx"					'Port
	
	'Den fullständiga adressen
	ServerURL = "http://"& ServerDomain &":"& ServerPort &"/admin.cgi?pass="& ServerPass &"&mode=viewxml"
	
	'XMLDOM
	Set oXML = Server.Createobject("Microsoft.XMLDOM")
	oXML.async = "false"
	
	'XMLHTTP
	Set oTrans = Server.CreateObject("Microsoft.XMLHTTP")
	oTrans.Open "GET", ServerURL, "false"
    oTrans.Send
	oXML.LoadXML(oTrans.ResponseText)
	
	Set Songs = oXML.SelectNodes("//SONG")
%>

<b>Låtar:</b>
<br>
<br>
<% For Each Song In Songs %>
	<%=Song.selectSinglenode("TITLE").text%><br>
<% Next %>

Men jag lyckades aldrig använda XSL ihop med extern XML via HTTP tyvärr.. Jag trodde XML via HTTP var en av de "stora" plusen med XML? Nåja..

nikoMedlem sedan juni 20022 415 inlägg
#14

Tycker steget över XMLHTTP känns onödigt.

<%
	'Manuella variabler
	ServerDomain = 	"www.x.com" 	'Domän
	ServerPass =	"xxxx"					'Lösenord
	ServerPort =	"xxxx"					'Port
	'Den fullständiga adressen
	ServerURL = "http://"& ServerDomain &":"& ServerPort &"/admin.cgi?pass="& ServerPass &"&mode=viewxml"
	'XMLDOM
	Set oXML = Server.Createobject("Microsoft.XMLDOM")
	oXML.async = false
	oXML.setProperty "ServerHTTPRequest", true
	oXML.Load ServerURL
	Set Songs = oXML.SelectNodes("//SONG")
%>
<b>Låtar:</b>
<br>
<br>
<% For Each Song In Songs %>
	<%=Song.selectSinglenode("TITLE").text%><br>
<% Next %>

.. borde gå lika bra.

Genererad på 373 ms · cache AV · v20260730165559-full.f96bc7eb