XML Download URL
XML Download URL
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
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
eine lokale XML-Datei laden:
Wenn Du eine 'remote' XML-Datei laden möchtest, musst Du dementsprechend einen URL einsetzen:
Grüße ... Peter
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")
Code: Alles auswählen
LoadXML(#XML, "http://bla/test.xml")
Hygge
Re: XML Download URL
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
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:
Grüße ... Peter
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.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.
Grüße ... Peter
Hygge
Re: XML Download URL
Danke Peter,
jetzt verstehe ich woher das Problem kommt.
jetzt verstehe ich woher das Problem kommt.
Re: XML Download URL
Ist es möglich eine WebGadget in einer Datei oder String umzuleiten, um das Cross-Origin zu umgehen?
Re: XML Download URL
nein, weil das WebGadget den gleichen Beschränkungen unterliegt.kunstlust hat geschrieben:Ist es möglich eine WebGadget in einer Datei oder String umzuleiten, um das Cross-Origin zu umgehen?
Wie geschrieben: von fremden Domains holt man sich die Daten am besten mit einem Proxy. Der hier dürfte beispielsweise funktionieren (ungetestet).SpiderBasic-Hilfe hat geschrieben:- GetGadgetItemText(): The following constants can be used to get information (only works on the same page domain)
Grüße ... Peter
Hygge
Re: XML Download URL
Das hier reicht in der Regel schon:Kiffi hat geschrieben:Wie geschrieben: von fremden Domains holt man sich die Daten am besten mit einem Proxy. [...].
Code: Alles auswählen
<?PHP
$url = $_GET['url'];
$xml = simplexml_load_file($url);
echo $xml->asXML();
?>
Code: Alles auswählen
LoadXML(#XML, "http://[DeinWebServer]/proxy.php?url=http://www.w3schools.com/xml/note.xml")
Grüße ... Peter
Hygge
Re: XML Download URL
1000 Dank für deine Hilfe Peter
Re: XML Download URL
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