//****************************************************************** //* Funktion: wahlenFromXML() * //* Beschreibung: lädt abhängig vom Browser die Daten einer * //* xml-Datei in ein xml-Document * //* * //* Übergabe: wahlart: muss der Unterfunktion xml_auswerten()* //* weitergeleitet werden * //* Rückgabe: - * //* * //* Datum Author Beschreibung/Änderung * //* 25.09.07 jb Ersterstellung * //****************************************************************** function wahlenFromXML(wahlart) { var fehler = null; var http = null; if (navigator.appName == "Microsoft Internet Explorer") { // *** IE *** http = new ActiveXObject ("Microsoft.XMLHTTP"); if (http != null) { http.open("GET", "../../xml/wahlen_ueberblick.xml", true); http.onreadystatechange = function() { if (http.readyState == 4) { // Problem: IE liefert lokal nur http.responseText richtig, // http.responseXML ist leer (IE erkennt Datei nicht als xml-Datei) // Lösung: zur Laufzeit ein xml-tag erstellen und http.responseText // hinein schreiben und in Variable abspeichern var tempXML = document.createElement('xml'); //http.responseText in innerHTML von xml-tag schreiben tempXML.setAttribute('innerHTML', http.responseText); tempXML.setAttribute('id','responseText'); document.body.appendChild(tempXML); //zur Sicherheit: document.getElementById('responseText').innerHTML = http.responseText; //xml-tag in Variable schreiben xmlDoc = document.getElementById('responseText'); //xml-tag kann nun wieder gelöscht werden document.body.removeChild(document.getElementById('responseText')); xml_auswerten(xmlDoc, wahlart); } }; http.send(null); } else { fehler = "Internet Explorer konnte kein ActiveXObject erstellen."; } } // ENDE IE-Browser else { // *** andere Browser *** http = new XMLHttpRequest(); if (http != null) { http.open("GET", "../../xml/wahlen_ueberblick.xml", true); http.onreadystatechange = function() { if (http.readyState == 4) { //alert(http.responseText); // xml-Datei ausgeben xml_auswerten(http.responseXML, wahlart); } }; http.send(null); } else { fehler = "Der Browser konnte keinen XMLHttpRequest() erzeugen."; } } // ENDE andere Browser // *** Fehlerbehandlung *** if (fehler != null) { alert(fehler); } } //****************************************************************** //* Funktion: xml_auswerten() * //* Beschreibung: aus der übergebenen xml-Datei werden alle zur * //* Verfügung stehenden Wahlen ausgelesen und in * //* die vorbereiteten Listen (id="naviWahlart" + * //* id="naviWahlart") eingefügt. * //* * //* Übergabe: xmlDoc: geladene xml-Datei * //* wahlart: anhand der übergebenen wahlart können * //* die entsprechenden Datumsangaben * //* ermittelt werden * //* * //* Rückgabe: - * //* * //* Datum Author Beschreibung/Änderung * //* 25.09.07 jb Ersterstellung * //****************************************************************** function xml_auswerten(xmlDoc, wahlart) { // *** 1. Zeile WAHLARTEN aufbauen *** // alle Elemente mit Tagname 'wahlart' aus der xml-Datei ermitteln var wahlarten = xmlDoc.getElementsByTagName("wahlart"); for (var i = 0; i < parseInt(wahlarten.length); i++) { var wahlartElem = wahlarten[i]; //
  • erzeugen für jedes gefundene Element (wahlart) // z.B.:
  • Bundestagswahlen
  • var listElem = document.createElement('li'); // erzeugen var linkElem = document.createElement('a'); // Link aufbauen: anhand Wahlbezeichnung und Wahldatum (das erste in der xml-Datei) var wahlName = wahlartElem.getElementsByTagName("wahlbezeich")[0].childNodes[0].nodeValue; var wahlDatum = wahlartElem.getElementsByTagName("wahldatum")[0].childNodes[0].nodeValue; var link = "../" + wahlName + "_" + wahlDatum + "/index.html"; linkElem.setAttribute('href',link); // Text zum Link hinzufügen linkElem.appendChild(document.createTextNode(wahlartElem.getAttribute("name"))); // dem Listenelement
  • hinzufügen listElem.appendChild(linkElem); //
  • als Kindelement in das ul-Element