Aktives Mitglied
Hallo,
wie im Titel schon steht, bin ich gerade mit meinen sehr beschränkten Kenntnissen dabei eine XML Datei mithilfe von Javascript auszulesen.
Ich habe lange bei Google gesucht und dann auch was gefunden, was ich ziemlich einfach auf meine Bedürfnisse anpassen konnte.
Ich habe die XML zunächst auf meinem Server bzw. auf meinem Laptop lokal gespeichert und es dann auch geschafft diese mit JS auszulesen.
Als ich das zum Laufen bekommen habe, habe ich dann die originale Datei aus dem Internet in mein JS eingefügt. Nachdem ich das gemacht habe, wird mir leider nicht das gewünschte Ergebnis geliefert.
Anfangs dachte ich, dass es am "http" oder so was liegt, dann habe ich aber den vollständigen Link der XML Datei die auf dem selben Server wie die HMTL liegt eingetragen und es hat funktioniert.
Über Google konnte ich bis jetzt leider kein anderes Script zum Auslesen finden, mit dem ich zurecht komme.
Hier mal mein Script:
Ich hab mal bewusst alle Kommentare mitgepostet, damit ihr es besser versteht. Wenn es zu unübersichtlich ist, poste ich auch gerne noch mal eine Version ohne Kommentare
Ich hoffe ihr habt mein Problem verstanden, und könnt mir helfen
mfg
wie im Titel schon steht, bin ich gerade mit meinen sehr beschränkten Kenntnissen dabei eine XML Datei mithilfe von Javascript auszulesen.
Ich habe lange bei Google gesucht und dann auch was gefunden, was ich ziemlich einfach auf meine Bedürfnisse anpassen konnte.
Ich habe die XML zunächst auf meinem Server bzw. auf meinem Laptop lokal gespeichert und es dann auch geschafft diese mit JS auszulesen.
Als ich das zum Laufen bekommen habe, habe ich dann die originale Datei aus dem Internet in mein JS eingefügt. Nachdem ich das gemacht habe, wird mir leider nicht das gewünschte Ergebnis geliefert.
Anfangs dachte ich, dass es am "http" oder so was liegt, dann habe ich aber den vollständigen Link der XML Datei die auf dem selben Server wie die HMTL liegt eingetragen und es hat funktioniert.
Über Google konnte ich bis jetzt leider kein anderes Script zum Auslesen finden, mit dem ich zurecht komme.
Hier mal mein Script:
Code:
<span id="ausgabeelement"></span>
<script language="javascript" type="text/javascript">
<!-- // JavaScript-Bereich für ältere Browser auskommentieren
// Wenn es sich bei dem vom Benutzer verwendeten Browser
// um einen Internet Explorer handelt, wird das Request-Objekt
// per ActiveX geholt, oder ansonsten vom JavaScript Window-Objekt.
var httpRequestObject = (navigator.appName == "Microsoft Inter<span id="ausgabeelement"></span>
<script language="javascript" type="text/javascript">
<!-- // JavaScript-Bereich für ältere Browser auskommentieren
// Wenn es sich bei dem vom Benutzer verwendeten Browser
// um einen Internet Explorer handelt, wird das Request-Objekt
// per ActiveX geholt, oder ansonsten vom JavaScript Window-Objekt.
var httpRequestObject = (navigator.appName == "Microsoft Internet Explorer") ?
new ActiveXObject ("Microsoft.XMLHTTP") : new XMLHttpRequest ();
// Verbindung per GET öffnen und die XML-Datei abrufen.
[COLOR=Red]httpRequestObject.open ('GET', 'http://www.fremderserver.de/datei_die_ich_auslesen_will.xml');[/COLOR]
// Event-Handler-Funktion handleReadyStateChange mit dem readystatechange-Event
// verbinden. Diese Funktion wird immer dann ausgeführt, wenn sich
// der Status der Abfrage ändert.
httpRequestObject.onreadystatechange = handleReadyStateChange;
// Als nächstes wird die Anfrage an den Server gesendet.
httpRequestObject.send (null);
// Event-Handler, der aufgerufen wird, wenn Statusänderungen beim Request-Objekt auftreten
function handleReadyStateChange () {
// Request abgeschlossen (readyState 4) und Server mit OK (Status 200) geantwortet?
// Bei allen anderen Statusänderungen wird die Funktion zwar aufgerufen, aber
// es wird nicht auf die Stati reagiert.
if (httpRequestObject.readyState == 4 && httpRequestObject.status == 200) {
// Request ist abgeschlossen und alle Daten sind angekommen
// => Empfangene XML-Daten im Ausgabeelement ausgeben
xml_daten_ausgeben (httpRequestObject.responseXML);
}
}
// Funktion zur formatierten Ausgabe der empfangenen Daten
function xml_daten_ausgeben (response) {
// Neues HTML-Element vom Typ Table erzeugen
var t = document.createElement ('table');
// Tabellenzeile für die Spaltenüberschriften erzeugen
var tr = document.createElement ('tr');
// Überschriften Fett ausgeben
tr.style.fontWeight = 'bold';
// Spalten für die Tabellenüberschriften generieren
var td = document.createElement ('td');
// Textknoten mit der Überschrift in die Spalte einfügen
td.appendChild (document.createTextNode ('Titel'));
// und das Spaltenelement in die Tabellenzeile einhängen.
tr.appendChild (td);
// Knoten klonen, Text darin ändern und den geklonten Knoten
// einfügen (zweimal mit veränderter Überschrift).
td = td.*****Node (true);
td.firstChild.nodeValue = 'Link';
tr.appendChild (td);
td = td.*****Node (true);
td.firstChild.nodeValue = 'Nachricht';
tr.appendChild (td);
// Tabellenzeile mit den Überschriften in Tabelle einhängen.
t.appendChild (tr);
// Elemente aus der XML-Datei ermitteln, die unter dem Tagnamen
// person gespeichert sind.
var personen = response.getElementsByTagName ('item');
// Alle gefundenen Elemente nacheinander abarbeiten.
for (var i = 0; i < personen.length; i++) {
// Jedes gefundene Element in einer eigenen Tabellenzeile darstellen
tr = document.createElement ('tr');
td = td.*****Node (true);
// Attribut name des Datensatzes auslesen und in der ersten
// Tabellenspalte ausgeben.
td.firstChild.nodeValue = personen[i].getElementsByTagName ('title')[0].firstChild.nodeValue;
tr.appendChild (td);
td = td.*****Node (true);
// In die zweite Spalte kommt das Attribut alter
td.firstChild.nodeValue = personen[i].getElementsByTagName ('link')[0].firstChild.nodeValue;
tr.appendChild (td);
td = td.*****Node (true);
// Die dritte Spalte wird mit dem Inhalt des Kindelements info gefüllt.
td.firstChild.nodeValue = personen[i].getElementsByTagName ('description')[0].firstChild.nodeValue;
tr.appendChild (td);
// Neue Tabellenzeile in die Tabelle einfügen.
t.appendChild (tr);
}
// Tabelle als Kindelement an das SPAN-Element anhängen
document.getElementById ('ausgabeelement').appendChild (t);
}
// -->
</script>net Explorer") ?
new ActiveXObject ("Microsoft.XMLHTTP") : new XMLHttpRequest ();
// Verbindung per GET öffnen und die XML-Datei abrufen.
httpRequestObject.open ('GET', 'test2.xml');
// Event-Handler-Funktion handleReadyStateChange mit dem readystatechange-Event
// verbinden. Diese Funktion wird immer dann ausgeführt, wenn sich
// der Status der Abfrage ändert.
httpRequestObject.onreadystatechange = handleReadyStateChange;
// Als nächstes wird die Anfrage an den Server gesendet.
httpRequestObject.send (null);
// Event-Handler, der aufgerufen wird, wenn Statusänderungen beim Request-Objekt auftreten
function handleReadyStateChange () {
// Request abgeschlossen (readyState 4) und Server mit OK (Status 200) geantwortet?
// Bei allen anderen Statusänderungen wird die Funktion zwar aufgerufen, aber
// es wird nicht auf die Stati reagiert.
if (httpRequestObject.readyState == 4 && httpRequestObject.status == 200) {
// Request ist abgeschlossen und alle Daten sind angekommen
// => Empfangene XML-Daten im Ausgabeelement ausgeben
xml_daten_ausgeben (httpRequestObject.responseXML);
}
}
// Funktion zur formatierten Ausgabe der empfangenen Daten
function xml_daten_ausgeben (response) {
// Neues HTML-Element vom Typ Table erzeugen
var t = document.createElement ('table');
// Tabellenzeile für die Spaltenüberschriften erzeugen
var tr = document.createElement ('tr');
// Überschriften Fett ausgeben
tr.style.fontWeight = 'bold';
// Spalten für die Tabellenüberschriften generieren
var td = document.createElement ('td');
// Textknoten mit der Überschrift in die Spalte einfügen
td.appendChild (document.createTextNode ('Titel'));
// und das Spaltenelement in die Tabellenzeile einhängen.
tr.appendChild (td);
// Knoten klonen, Text darin ändern und den geklonten Knoten
// einfügen (zweimal mit veränderter Überschrift).
td = td.*****Node (true);
td.firstChild.nodeValue = 'Link';
tr.appendChild (td);
td = td.*****Node (true);
td.firstChild.nodeValue = 'Nachricht';
tr.appendChild (td);
// Tabellenzeile mit den Überschriften in Tabelle einhängen.
t.appendChild (tr);
// Elemente aus der XML-Datei ermitteln, die unter dem Tagnamen
// person gespeichert sind.
var personen = response.getElementsByTagName ('item');
// Alle gefundenen Elemente nacheinander abarbeiten.
for (var i = 0; i < personen.length; i++) {
// Jedes gefundene Element in einer eigenen Tabellenzeile darstellen
tr = document.createElement ('tr');
td = td.*****Node (true);
// Attribut name des Datensatzes auslesen und in der ersten
// Tabellenspalte ausgeben.
td.firstChild.nodeValue = personen[i].getElementsByTagName ('title')[0].firstChild.nodeValue;
tr.appendChild (td);
td = td.*****Node (true);
// In die zweite Spalte kommt das Attribut alter
td.firstChild.nodeValue = personen[i].getElementsByTagName ('link')[0].firstChild.nodeValue;
tr.appendChild (td);
td = td.*****Node (true);
// Die dritte Spalte wird mit dem Inhalt des Kindelements info gefüllt.
td.firstChild.nodeValue = personen[i].getElementsByTagName ('description')[0].firstChild.nodeValue;
tr.appendChild (td);
// Neue Tabellenzeile in die Tabelle einfügen.
t.appendChild (tr);
}
// Tabelle als Kindelement an das SPAN-Element anhängen
document.getElementById ('ausgabeelement').appendChild (t);
}
// -->
</script>
Ich hoffe ihr habt mein Problem verstanden, und könnt mir helfen
mfg
Zuletzt bearbeitet: