Ergebnis 1 bis 6 von 6
  1. #1
    Mitglied Avatar von TheCyX
    Registriert seit
    Sep 2009
    Beiträge
    1.149
    Danksagungen
    11

    Question XML aus einer WEB-Url lesen

    Hallo erstmal

    Folgendes Problem:
    Ich muss eine XML abfragen und verarbeiten könnten die nicht lokal auf dem PC liegt.
    Teste ich meinen Code mit einem Lokalen file, funktioniert es ohne Probleme.

    jQuery Script:
    PHP-Code:
    $(document).ready(function () {
        $.
    ajax({
            
    type'GET',
            
    url'http://localhost:1410/?SNO=56789&ASQL=plu%20mec%2010;',
            
    crossDomaintrue,
            
    dataType"xml",
            
    successparseXml
        
    });
    });

    function 
    parseXml(xml) {
        $(
    xml).find('dataset').each(function () {
            $(
    "#output").append($(this).find('var[key="article.name"]').text() + "<br />");
        });

    XML Ausgabe vom Server:
    PHP-Code:
    <document name="screen">
      <
    section name="status">
        <
    dataset>
          <var 
    key="organization.number">2919</var>
          <var 
    key="organization.name">Testname</var>
          <var 
    key="organization.businessdate">09.02.2013</var>
          <var 
    key="situation.number">0</var>
          <var 
    key="situation.name">Normalbetrieb</var>
          <var 
    key="site.number">0</var>
          <var 
    key="site.name">Normalbetrieb</var>
          <var 
    key="pricelevel.number">1</var>
          <var 
    key="pricelevel.name">normal</var>
          <var 
    key="terminal.number">0</var>
          <var 
    key="terminal.name">webserver</var>
          <var 
    key="terminal.status">open</var>
          <var 
    key="terminal.tapster">inactive</var>
          <var 
    key="waiter.number">1</var>
          <var 
    key="waiter.name">Kellner 1</var>
          <var 
    key="table.number">5</var>
          <var 
    key="table.balance">3.2</var>
          <var 
    key="table.sales">3.2</var>
          <var 
    key="profile.number">1</var>
          <var 
    key="profile.name">Standard</var>
          <var 
    key="execution.severity">I</var>
          <var 
    key="execution.code">23600003</var>
          <var 
    key="execution.message">Mec list.</var>
        </
    dataset>
      </
    section>
      <
    section name="plu.list">
        <
    dataset>
    [...] 
    Meine Seite bleibt weiß. Ein direktes XML-File (test.xml) gibt der Code hingegen richtig aus.
    Gebe ich den obigen Link in einem Browser ein, bekomme ich ebenfalls eine XML Ausgegeben.

    Eventuell hat einer von euch eine Idee

  2. #2
    ex-Moderator Avatar von epiphora
    Registriert seit
    Apr 2008
    Ort
    DE-CIX
    Beiträge
    6.597
    Danksagungen
    418

    Standard Re: XML aus einer WEB-Url lesen

    Aufgrund der Same Origin Policy kannst Du nicht auf Objekte aus anderen Quellen zugriefen. Die Fehlerkonsole hätte Dir sicher einen Hinweis darauf geliefert.

    Du benötigst also ein serverseitiges Script, das die Daten für Dich abholt und zur Verfügung stellt. Wenn die geladene Datei und Dein Javascript aus dem selben origin kommen, besteht das Problem nicht mehr.

  3. #3
    Mitglied

    (Threadstarter)

    Avatar von TheCyX
    Registriert seit
    Sep 2009
    Beiträge
    1.149
    Danksagungen
    11

    Standard Re: XML aus einer WEB-Url lesen

    Danke für die Antwort

    Meine Fehlerkonsole zeigt folgendes:
    Code:
    XML-Verarbeitungsfehler: Kein Element gefunden Adresse: moz-nullprincipal:{7cb57e29-fc9d-4d93-9a86-c9cc975e9d61} Zeile Nr. 1, Spalte 1:
    ^
    Hmm, ich bin selbst auf localhost und der sever ebenso (zumindest jetzt zum testen). Sollte es da dann nicht klappen?

    Was ich noch versucht hatte war den Datentyp auf "jsonp" zu setzen, da dort wohl domainübergreifende Abfragen möglich sind.

    Nur dann bekomme ich folgendes:
    Code:
    SyntaxError: syntax error
    <document name="screen"><section name="status"><dataset><var[...]
    Das Tolle ist: ich sehe in der Fehlermeldung meine XML Daten -.- Nur verarbeiten is nicht..

  4. #4
    deaktivierter Nutzer
    deaktiviertes Benutzerkonto

    Standard Re: XML aus einer WEB-Url lesen

    jsonp ist kompletter Unsinn, das ist ein völlig anderes Dateiformat.

    Warum das mit dem XML nicht funktioniert hat noch einen anderen Grund, du schickst einen komplett falschen Header. Standardmäßig gibt ein PHP-Script immer text/html als Datentyp der Ausgabe an. Die gewählte Ajax-Implementierung erwartet jedoch text/xml oder application/xml und verwirft alles, wo der Server behauptet es hätte einen anderen Datentyp. Dabei ist es irrelevant welche Daten es tatsächlich enthält, die Angabe des Servers hat Präzedenz.

    Darüber hinaus ist das so kein valides XML, Google hilft dir dabei raus zu finden warum nicht.

  5. #5
    Mitglied

    (Threadstarter)

    Avatar von TheCyX
    Registriert seit
    Sep 2009
    Beiträge
    1.149
    Danksagungen
    11

    Standard Re: XML aus einer WEB-Url lesen

    Danke ebenfalls für die Erklärung

    Kann ich das "so einfach" also vergessen?
    Serverseitig habe ich keinen Einfluss. Dieser schickt seine "XML" immer so.

    Das diese nicht unbedingt "konform" ist, ist klar. Leider kann ich da nichts machen.

  6. #6
    ex-Moderator Avatar von Kugelfisch23
    Registriert seit
    Oct 2007
    Beiträge
    18.640
    Danksagungen
    458

    Standard Re: XML aus einer WEB-Url lesen

    Zitat Zitat von TheCyX Beitrag anzeigen
    Hmm, ich bin selbst auf localhost und der sever ebenso (zumindest jetzt zum testen). Sollte es da dann nicht klappen?
    Das hängt (neben den von Exterminans genannten Faktoren) davon ab, ob der URI deiner Seite und der URI des nachzuladenden XML-Dokuments der Same-Origin-Policy genügen. Zum Origin zählt insbesondere auch die Port-Nummer, URIs mit abweichender Port-Angabe im Authority-Teil verursachen ebenso Cross-Origin-Probleme wie URIs mit abweichendem Hostnamen.

    Zitat Zitat von TheCyX Beitrag anzeigen
    Kann ich das "so einfach" also vergessen?.
    Nein, aber mutmasslich wirst du nicht umhinkommen, auf deinem Webserver ein Skript (z.B. in PHP) zu betreiben, welches als Reverse-Proxy für das XML-Dokument fungiert, d.h. die Datei vom fremden Webserver anfordert und (mit einer korrekten Content-Type-Angabe im Header) an den Client durchreicht.

    Zitat Zitat von Exterminans Beitrag anzeigen
    Darüber hinaus ist das so kein valides XML, Google hilft dir dabei raus zu finden warum nicht.
    Die Aussage ist zwar an sich korrekt, einen Zusammenhang mit dem Problem kann ich jedoch nicht erkennen. Ein XML-Dokument ohne zugeordnete DTD kann niemals valide sein - schliesslich kann es dann auch keiner DTD genügen. Gemäss XML 1.0 ist ein Dokument genau dann valide (http://www.w3.org/TR/REC-xml/#dt-valid)
    [...] if it has an associated document type declaration and if the document complies with the constraints expressed in it.
    Ein nicht-validierender XML-Parser erfordert allerdings kein valides Dokument und auch keine zugeordnete DTD. Ein Dokument muss lediglich wohlgeformt gemäss http://www.w3.org/TR/REC-xml/#sec-well-formed sein. Das ist anhand des geposteten Fragments zumindest nicht auszuschliessen - so wäre z.B.
    HTML-Code:
    <document name="screen">
      <section name="status">
        <dataset>
          <var key="organization.number">2919</var>
          <var key="organization.name">Testname</var>
          <var key="organization.businessdate">09.02.2013</var>
          <var key="situation.number">0</var>
          <var key="situation.name">Normalbetrieb</var>
          <var key="site.number">0</var>
          <var key="site.name">Normalbetrieb</var>
          <var key="pricelevel.number">1</var>
          <var key="pricelevel.name">normal</var>
          <var key="terminal.number">0</var>
          <var key="terminal.name">webserver</var>
          <var key="terminal.status">open</var>
          <var key="terminal.tapster">inactive</var>
          <var key="waiter.number">1</var>
          <var key="waiter.name">Kellner 1</var>
          <var key="table.number">5</var>
          <var key="table.balance">3.2</var>
          <var key="table.sales">3.2</var>
          <var key="profile.number">1</var>
          <var key="profile.name">Standard</var>
          <var key="execution.severity">I</var>
          <var key="execution.code">23600003</var>
          <var key="execution.message">Mec list.</var>
        </dataset>
      </section>
    </document>
    ein wohlgeformtes XML-Dokument und damit parsebar. Zu beachten ist, dass aufgrund der fehlenden XML-Deklaration die Zeichencodierung extern (bei HTTP über einen Content-Type-Header) mitgeteilt werden muss, sofern nicht UTF-16 mit BOM oder UTF-8 verwendet wird (http://www.w3.org/TR/REC-xml/#charencoding).

  7.  
     
     

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •