[JavaScript] Xml-File per Javascript auslesen

Dieses Thema im Forum "Webentwicklung" wurde erstellt von HuNdI, 23. September 2009 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 23. September 2009
    Xml-File per Javascript auslesen

    Ich habe schon ein paar Sachen dazu gefunden und rumprobiert aber bin noch zu keinem Ergebnis gekommen..

    Also die Frage.. Wie kann ich per JavaScript eine Xml-Datei auslesen?

    Alle mein Files (Html, Java, Css, Xml ) liegen im selben Verzeichnis ( z.Z. auf meinem Rechner später auf einem Server )

    Mein XML:
    HTML:
    <all>
     <error>
     <java_error> <![CDATA[ Die Seite kann nicht dargestellt werden. ]]> </java_error>
     </error>
    </all>
    
    Und mein Code Ausschnitt wo der Error benötigt wird:
    HTML:
    <span class="error" id="java_error">
     <script type="text/javascript" >
     /* Hier soll der Error stehn */
     </script>
    </span>
    
    Und jetzt brauche ich eine Möglichkeit wie dies realisiert werden kann.

    P.S.: Ich habe vorerst nur vor im FF zu programmieren, wenns in anderen auch klappt ist aber auch gut
     
  2. 23. September 2009
    AW: Xml-File per Javascript auslesen

    du liest dir via [g]xmlhttprequest[/g] die datei ein, danach holst du dir via [g]DOM[/g] die fehlermeldung raus, dann holst du dir das element "java_error" ebenfalls via DOM und schreibst da den fehler als text-node rein.
     
  3. 23. September 2009
    AW: Xml-File per Javascript auslesen

    Also.. ich habe nun eine Variable( xml ) die den gesamten xml Inhalt enthält.. kann ich mit alert sehr schön sehen..

    Nun versuche ich das mal auszulesen:
    HTML:
    alert( xml.getElementsByTagName("java_error")[0].firstChild.data )
    
    Das klappt leider nicht so wie ich es will.. Ich bekomme kein alert also iwie ist da was falsch
     
  4. 23. September 2009
    AW: Xml-File per Javascript auslesen

    FF hat so ne schöne fehlerkonsole, wenn du die öffnest kannst du sehen wo und warum der interpreter meckert und seinen dienst verweigert
     
  5. 25. September 2009
    AW: Xml-File per Javascript auslesen

    Stimmt.. warum hab ich da nicht dran gedacht.. werd ich mir nachher mal schön ansehen.. Danke

    Edit:
    So ich habe nachgeschaut.. und die Konsole meint
    "xml.getElementsByTagName is not a function"

    In die xml Variable wurde der gesamte Inhalt der Xml-File geschrieben, nun soll er mir den Tag suchen.
    Aber ich wüsste nicht wie ich das ändern könnte.

    Code:
    xml = xmlHttp.responseText
    aler = xml.getElementsByTagName("java_error")[0].firstChild.data
    
     
  6. 26. September 2009
    AW: Xml-File per Javascript auslesen

    responseText gibt einen String zurück.
    Das wegen nimm mal lieber responseXML!
     
  7. 26. September 2009
    AW: Xml-File per Javascript auslesen

    Hmm.. gibt keine Fehlermeldung.. aber wenn ich mir das ausgeben lasse kommt gar nix..
    leerer String
     
  8. 26. September 2009
    AW: Xml-File per Javascript auslesen

    dann hast du vergessen die xml-datei auch wirklich als xml auszuliefern.

    falls du die sachen mit php ausgibst (zb via print/echo oder include etc...), dann musst du ganz am anfang folgendes notieren:
    PHP:
    header ( 'Content-Type: application/xml' );
    diese zeile code muss aber vor allen möglichen ausgaben stehen. eine ausgabe ist z.b.: auch zeug, dass zwischen ?> und <?php steht!
     
  9. 27. September 2009
    AW: Xml-File per Javascript auslesen

    Ich weiß nicht inwiefern php mit Javascript zusammenhängt da ich php noch nie gesehen habe.. daher wollte das ganze halt mit Javascript lösen

    Edit:
    Keiner eine Idee?
    Falls jmd eine kleine Bsp-Datei hat die funktioniert, oder eine Seite wo dies erklärt wird, wär gut dann kann ich mich selbst einlesen.
    Wie gesagt hab bisher noch nichts brauchbares
     
  10. 30. September 2009
    AW: Xml-File per Javascript auslesen

    Ich habe inzwischen das Problem ergründen können.. das "CDATA" stört den, deshalb bekomme ich nichts zurück.. genauso stört alles an Tags, also <br> und co

    Bsp:
    Code:
    <java_error> <![CDATA[ Die Seite kann nicht dargestellt werden.<br /><br />Möglicherweise liegt ein Problem mit Javascript vor. ]]> </java_error>
    Rückgabe: ""

    Code:
    <java_error> Die Seite kann nicht dargestellt werden.<br /><br />Möglicherweise liegt ein Problem mit Javascript vor. </java_error>
    Rückgabe: "Die Seite kann nicht dargestellt werden."

    Code:
    <java_error>Die Seite kann nicht dargestellt werden.Möglicherweise liegt ein Problem mit Javascript vor. </java_error>
    Rückgabe: "Die Seite kann nicht dargestellt werden.Möglicherweise liegt ein Problem mit Javascript vor"

    Hat jmd eine Idee wie man das beheben könnte? Wäre mir ganz lieb



    Edit:
    Ich habe auch noch ein anderes Problem und zwar habe ich jetzt diese schöne Funktion:
    Code:
    function get_xml_part ( xml_part ) {
     var datas
     var xml = null
     var xmlHttp = new XMLHttpRequest()
     var xmlHttp = null
     if ( typeof XMLHttpRequest != "undefined" ) {
     xmlHttp = new XMLHttpRequest()
     }
     if ( xmlHttp ) {
     xmlHttp.open( "GET", "datas.xml", true )
     
     xmlHttp.onreadystatechange = function () {
     if ( xmlHttp.readyState == 4 ) {
     xml = xmlHttp.responseXML.getElementsByTagName( xml_part )[0].firstChild.data
     alert( xml )
     }
     }
     alert(xml)
     xmlHttp.send( null )
     }
     get_xml_part = datas
    }
    Soo.. da wo das alert( xml ) steht liegt das Problem.. ich kann ohne weiteres die var xml ausgeben.. die var xml ist aber nur in der inneren Funktion deklariert, ausserhalb kann ich diese nicht auslesen..
    Also hier meine Frage: Wie bekomme ich die var xml aus der Funktion hinaus sodass ich diese dann auch ausserhalb der verwenden kann?
     
  11. 11. Oktober 2009
    AW: Xml-File per Javascript auslesen

    Hi HuNdI,

    ich will gleich mit der Tür in's Haus fallen: Wieso das marshalling in XML ?

    Wenn du JSON benutzt, kannst du direkt auf die Informationen
    zugreifenm ohne langsames umwalden.
    Zu diesem Performancegewinn kommt noch die Übertragungsmenge,
    die um einiges geschrumpft wird.

    Noch obendrauf ist die Verarbeitung von JSON mit Javascript weltklasse einfach.

    Beispiel für dich:
    messages.json
    Code:
    {all:
     {error: {
     {java_error: "Die Seite kann nicht dargestellt werden.<br /><br />Möglicherweise liegt
    ein Problem mit Javascript vor."}
     }
    }
    Nun würde ich dir Mootools an's Herz legen. Das ist ein Javascript Framework, das du einfach
    zusätzlich in deine Seite einbinden kannst. Folgend dann der Zugriff auf deine Error-Messages:

    Code:
    new Request.JSON({url: 'http://domain.tld./meine/url/zu/messages.json', noCache: 1, onComplete: function( pMessages ){
     alert( pMessages.all.error.java_error );// gibt aus "Die Seite kann ...."
    }}).get();
    
    Aber falls das alles dir zu doof ist und du nur die Antwort auf die Frage willst:
    Indem du an der Stelle, an dem das XML zurück kommt, ein Callback aufrufst.
    zb.:
    Code:
    function get_xml_part ( xml_part, pCallback ) {
     var datas
     var xml = null
     var xmlHttp = new XMLHttpRequest()
     var xmlHttp = null
     if ( typeof XMLHttpRequest != "undefined" ) {
     xmlHttp = new XMLHttpRequest()
     }
     if ( xmlHttp ) {
     xmlHttp.open( "GET", "datas.xml", true )
     
     xmlHttp.onreadystatechange = function () {
     if ( xmlHttp.readyState == 4 ) {
     xml = xmlHttp.responseXML.getElementsByTagName( xml_part )[0].firstChild.data
     pCallback( xml )
     }
     }
     xmlHttp.send( null )
     }
     get_xml_part = datas
    }
    Dein Aufruf wäre dann:
    Code:
    get_xml_part( 'java_error', function( pXML ){
     alert( 'hier gehts weiter mit: ' + pXML );
    })
    Ich lege dir aber nahe, das ganze mit Mootools zu machen - wie du oben siehst, ersparst
    du Dir eine Menge arbeit.

    Grüße,
    MArc
     
  12. 12. Oktober 2009
    AW: Xml-File per Javascript auslesen

    Ich werde es nacher erst einmal mit der 2. Variante testen und schaun obs klappt, da ich aber noch ein anderes Problem gesehen habe werden ich es danach mit Jason und dem MooTools versuchen.. zwar mit Jason noch nie gearbeitet oder gesehen und MooTools ist mir auch nicht bekannt aber ich werde es mir ansehen.
    Also schon mal danke
    Wenns klappt sag ich Bescheid.. wenn nicht wohl auch^^
     
  13. 14. Oktober 2009
    AW: Xml-File per Javascript auslesen

    Ich hab mal ein wenig bei Jason und dem Mootools rumgeschaut

    Hab mir mal das hier gebastelt:
    Code:
    <html>
    <head><title></title>
     <script type="text/javascript" src="mootools-full.js"></script>
    </head>
    <body>
     <script type="text/javascript">
     new Request.JSON({url: 'file:///C:/.../test/messages.json', noCache: 1, onComplete: function( pMessages ){
     alert( pMessages.all.error.java_error );
     }}).get();
     </script>
    </body>
    </html>
    In der messages.json ( die im selben Verzeichniss liegt ) steht:
    Code:
    {all:
     {error: {
     {java_error: "Die Seite kann nicht dargestellt werden.<br /><br />Möglicherweise liegt
    ein Problem mit Javascript vor."}
     }
    }
    Ich bekomme nun aber den Error:

    nicht wohlgeformt
    C:/bla/und Pfad halt/messages.json?noCache=1255508684990
    {all:

    und noch pMessages is undefined

    Was hab ich falsch gemacht, was muss ich ändern/ergänzen?
     
  14. 14. Oktober 2009
    AW: Xml-File per Javascript auslesen

    warum get()?
    probiers mal mit send()

    HTML:
    new Request.JSON({
     url: '../test/messages.json',
     noCache: 1,
     onComplete: function( pMessages ){
     alert( pMessages.all.error.java_error );
     }
    }).send();
    
    und dein c:/ unsw. kannst vergessen.

    absolute mit http://
    relative mit /
     
  15. 14. Oktober 2009
    AW: Xml-File per Javascript auslesen

    Das send ändert auch nichts.
    Den Pfad hatte ich nur gemacht da ich einen Fehler hatte.. da das aber auch der obrige war reicht ja "url: 'messages.json'"

    Zu der messages.json.. die muss nur "messages.json" und nicht iwie "messages.json.js" oder so heisen oder?
    Und darin muss auch nichts anderes stehen also das obrige?
     
  16. 14. Oktober 2009
    AW: Xml-File per Javascript auslesen

    dein json
    HTML:
    {
     "all" : {
     "error" : {
     "java_error" : "Die Seite kann nicht dargestellt werden.<br /><br />Möglicherweise liegt ein Problem mit Javascript vor."
     }
     }
    }
    
    dein js
    HTML:
    <script type="text/javascript">
     var request = new Request.JSON({
     url: 'messages.json',
     onComplete: function(pMessages) {
     alert( pMessages.all.error.java_error );
     }
     }).send();
    </script>
    
    viel spass

    // edit:
    fehler lag an dein json
     
  17. 14. Oktober 2009
    AW: Xml-File per Javascript auslesen

    Wenn ich aber die "" hinzufüge oder sogar deinen ganzen Code kopiere klappt es genauso wenig.. der hat sofort nach der ersten Klammer den Fehler "nicht wohlgeformt"
     
  18. 14. Oktober 2009
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    AW: Xml-File per Javascript auslesen

    No File | xup.in

    läuft sogar auf dem ie6
     
  19. 14. Oktober 2009
    AW: Xml-File per Javascript auslesen

    Hmm auf dem Ie6 vll... aber bei mir läuft auch das aufgrund des selben Fehlers weder im Ie7 noch im FF3
     
  20. 14. Oktober 2009
    AW: Xml-File per Javascript auslesen

    ich habs auf

    - ie 6
    - ie 8
    - ff 3
    - safari (pc)
    - opera
    - chrome

    getestet. läuft ohne probleme.
    vielleicht mal dein cache löschen.

    // edit
    läuft das bei dir
    http://demos.mootools.net/Request.JSON
     
  21. 14. Oktober 2009
    AW: Xml-File per Javascript auslesen

    Ich umgeh immer den Cache beim neu laden.. und im Ie7 war noch keiner vorhanden
    Ich zieh das mal ins Inet hoch
     
  22. 14. Oktober 2009
    AW: Xml-File per Javascript auslesen

    Hi,

    da du die Ressource mit file:// ansprichst und nicht mit http:// kann es
    durchaus sein, dass die Browser sich die falschen types ziehen, da
    du ja hoechstwahrscheinlich erst eine .txt datei angelegt hast und
    nachtraeglich es einfach unbenannt hast. Wuerde das ueber ein
    Webserver oder gar gleich PHP laufen, wuerden der content-type angepasst
    und der Browser weiss, dass er es nicht als XML interpretieren soll.
    ('Nicht wohl geformt'-Fehler in Browsern passieren meist nur bei XML-Demarshalling )

    MArc
     
  23. 14. Oktober 2009
    AW: Xml-File per Javascript auslesen

    Also jetzt bin ich ganz draußen..

    Die message.json habe ich erstellt indem ich eine Textdatei erstellt habe.. ist wahr.. wenn ich die per Editor erstelle gehts auch nicht..

    Das file:// steht gar nicht mehr drinne -> url:'message.json'

    Wenn ich das im Inet teste hat der den Fehler nicht mehr, es geht trotzdem noch nicht, denk mal weil der immer noch meint das pMessages nicht deklariert ist
     
  24. 14. Oktober 2009
    AW: Xml-File per Javascript auslesen

    teste mal ob dein webserver ".json" richtig ausgibt als "application/json" oder "text/json"

    einfach mal die datei "messages.json" direkt aufrufen und mime anschaun
     
  25. 14. Oktober 2009
    AW: Xml-File per Javascript auslesen

    testest du das auf einen lokalen server (z.b. xampp) oder ruft du die *.html datei einfach nur so auf?
     
  26. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.