XML Download URL

Hier könnt ihr alle Fragen zu SpiderBasic austauschen.
Benutzeravatar
kunstlust
Beiträge: 259
Registriert: 12.04.2012 23:47
Wohnort: Hannover
Kontaktdaten:

XML Download URL

Beitrag von kunstlust »

Hallo,

in der Hilfe von Spiderbasic ist bei LoadXML folgendes zu lesen Loads a XML tree from an URL or a local file.
Wie bitte ist es möglich, per http ein XML File einzulesen, ich habe es nicht hinbekommen, die Samples sind ja noch recht bescheiden...

Danke für einen Tip
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: XML Download URL

Beitrag von Kiffi »

eine lokale XML-Datei laden:

Code: Alles auswählen

EnableExplicit

Procedure Loading(Type, Filename.s)
  Debug Filename + " loaded"
EndProcedure

Procedure LoadingError(Type, Filename.s)
  Debug Filename + ": loading error"
EndProcedure

#XML = 0

; Register the loading event before calling any resource load command
BindEvent(#PB_Event_Loading,      @Loading())
BindEvent(#PB_Event_LoadingError, @LoadingError())

LoadXML(#XML, "test.xml")
Wenn Du eine 'remote' XML-Datei laden möchtest, musst Du dementsprechend einen URL einsetzen:

Code: Alles auswählen

LoadXML(#XML, "http://bla/test.xml")
Grüße ... Peter
Hygge
Benutzeravatar
kunstlust
Beiträge: 259
Registriert: 12.04.2012 23:47
Wohnort: Hannover
Kontaktdaten:

Re: XML Download URL

Beitrag von kunstlust »

Danke, aber leider gib es bei Laden immer Fehler, es scheint nix mit der XML zu tun zu haben, es passierte bei allen Testdaten so bei mir.

Code: Alles auswählen

EnableExplicit

Procedure Loading(Type, Filename.s)
  Debug Filename + " loaded"
EndProcedure

Procedure LoadingError(Type, Filename.s)
  Debug Filename + ": loading error"
EndProcedure

#XML = 0

; Register the loading event before calling any resource load command
BindEvent(#PB_Event_Loading,      @Loading())
BindEvent(#PB_Event_LoadingError, @LoadingError())

LoadXML(#XML, "http://www.w3schools.com/xml/note.xml")
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: XML Download URL

Beitrag von Kiffi »

Du kannst aus JavaScript heraus nicht beliebige XMLs von irgendwoher laden. Das muss der Server schon zulassen. Ein Blick in die Console Deines Browsers zeigt:
XMLHttpRequest cannot load http://www.w3schools.com/xml/note.xml?_=1434370739535. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:9086' is therefore not allowed access.
Abhilfe: Im obigen Fall beispielsweise einen kleinen PHP-Proxy schreiben, von dem Du dann die Daten anforderst. Solltest Du die XMLs von Deinem eigenen Server anfordern, dann in der entsprechenden Konfiguration des Servers ein Access-Control-Allow-Origin hinzufügen.

Grüße ... Peter
Hygge
Benutzeravatar
kunstlust
Beiträge: 259
Registriert: 12.04.2012 23:47
Wohnort: Hannover
Kontaktdaten:

Re: XML Download URL

Beitrag von kunstlust »

Danke Peter,

jetzt verstehe ich woher das Problem kommt.
Benutzeravatar
kunstlust
Beiträge: 259
Registriert: 12.04.2012 23:47
Wohnort: Hannover
Kontaktdaten:

Re: XML Download URL

Beitrag von kunstlust »

Ist es möglich eine WebGadget in einer Datei oder String umzuleiten, um das Cross-Origin zu umgehen?
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: XML Download URL

Beitrag von Kiffi »

kunstlust hat geschrieben:Ist es möglich eine WebGadget in einer Datei oder String umzuleiten, um das Cross-Origin zu umgehen?
nein, weil das WebGadget den gleichen Beschränkungen unterliegt.
SpiderBasic-Hilfe hat geschrieben:- GetGadgetItemText(): The following constants can be used to get information (only works on the same page domain)
Wie geschrieben: von fremden Domains holt man sich die Daten am besten mit einem Proxy. Der hier dürfte beispielsweise funktionieren (ungetestet).

Grüße ... Peter
Hygge
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: XML Download URL

Beitrag von Kiffi »

Kiffi hat geschrieben:Wie geschrieben: von fremden Domains holt man sich die Daten am besten mit einem Proxy. [...].
Das hier reicht in der Regel schon:

Code: Alles auswählen

<?PHP
	$url = $_GET['url'];
	$xml = simplexml_load_file($url);
	echo $xml->asXML();
?>
Abspeichern unter proxy.php und aufrufen mit:

Code: Alles auswählen

LoadXML(#XML, "http://[DeinWebServer]/proxy.php?url=http://www.w3schools.com/xml/note.xml")
Wichtig: Das klappt nur mit einem auf den WebServer exportierten SpiderBasic-Projekt. Direkt aus dem Editor aufgerufen funktioniert es nicht, weil der interne WebServer (mongoose) nicht für PHP freigeschaltet ist (warum auch immer).

Grüße ... Peter
Hygge
Benutzeravatar
kunstlust
Beiträge: 259
Registriert: 12.04.2012 23:47
Wohnort: Hannover
Kontaktdaten:

Re: XML Download URL

Beitrag von kunstlust »

1000 Dank für deine Hilfe Peter :bounce:
Benutzeravatar
kunstlust
Beiträge: 259
Registriert: 12.04.2012 23:47
Wohnort: Hannover
Kontaktdaten:

Re: XML Download URL

Beitrag von kunstlust »

Kannst du mir noch sagen warum das Beispiel CreateXML() aus der Hilfe nicht geht?

Code: Alles auswählen

; Create xml tree
  xml = CreateXML(#PB_Any) 
  mainNode = CreateXMLNode(RootXMLNode(xml), "Zoo") 
  
  ; Create first xml node (in main node)
  item = CreateXMLNode(mainNode, "Animal") 
  SetXMLAttribute(item, "id", "1") 
  SetXMLNodeText(item, "Elephant") 
  
  ; Create second xml node (in main node)
  item = CreateXMLNode(mainNode, "Animal") 
  SetXMLAttribute(item, "id", "2") 
  SetXMLNodeText(item, "Tiger") 
  
  ; Display the xml
  Debug ComposeXML(x
Antworten