Seite 1 von 2

XML Download URL

Verfasst: 15.06.2015 13:18
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

Re: XML Download URL

Verfasst: 15.06.2015 13:51
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

Re: XML Download URL

Verfasst: 15.06.2015 14:16
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")

Re: XML Download URL

Verfasst: 15.06.2015 14:27
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

Re: XML Download URL

Verfasst: 15.06.2015 14:33
von kunstlust
Danke Peter,

jetzt verstehe ich woher das Problem kommt.

Re: XML Download URL

Verfasst: 15.06.2015 15:02
von kunstlust
Ist es möglich eine WebGadget in einer Datei oder String umzuleiten, um das Cross-Origin zu umgehen?

Re: XML Download URL

Verfasst: 15.06.2015 15:27
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

Re: XML Download URL

Verfasst: 15.06.2015 15:49
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

Re: XML Download URL

Verfasst: 15.06.2015 15:53
von kunstlust
1000 Dank für deine Hilfe Peter :bounce:

Re: XML Download URL

Verfasst: 15.06.2015 17:34
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