Danke Jörn,
ich stimme dir zu, dass das so funktioniert. Ich meinte das allerdings etwas anders: Die Funktion aus item7 lädt die XML-Daten aus einer Datei. Wie passe ich die Funktion an, damit sie die Daten via document.getElementById akzeptiert?
Ich habe hier schon verschiedene Ideen probiert, bin allerdings icht zum Ziel gekommen.
Ich verstehe ehrlich gesagt das Problem noch nicht ganz. Möchtest du das Textarea aus einer anderen Datei auslesen? oder welchen Zweck soll diese Funktion erfüllen, den ein einfaches Auslesen des Textfeldes nicht erfüllt?
Vielleicht beschreibst du mal, wozu und wie du diese Funktion einsetzen möchtest, und was daran nicht funktioniert?
Die Daten einfach via document.getElementById an die Funktion xmlAnalyse() zum Auswerten dieser zu übergeben, klappt nicht, weil die Daten im XML-Format sind. Je nach Browser, in dem das Script läuft, wird eine unterschiedliche Methode zum Laden der Daten erforderlich.
Ich habe daher die Funktion aus item7 genutzt: Hier funktioniert das Laden der Daten im XML-Format, nur eben aus einer externen Datei anstatt einem Textarea.
Wie ist denn die Funktion xmlAnalyse() definiert?
Die Funktion xmlAnalyse() parst die Knoten des XML-Dokuments, welches mittels der Funktion aus item7 geladen wurde.
BTW: Ich habe mal versucht die Daten via document.getElementById direkt an die Funktion xmlAnalyse() zu übergeben, was aber nicht funktioniert. Wenn ich, wie geschrieben, die Daten aus einer Datei hole, was wiederum mit der Funktion aus item7 klappt, und von da aus an xmlAnalyse() übergebe, dann klappt die Analyse.
Mit "Wie ist denn die Funktion xmlAnalyse() definiert?" meinte ich die (vollständige) Definition dieser Funktion im JavaScript-Code.
Ah - OK:
function xmlAnalyse() {
var InputS1Node = "GrpHdr"
var InputS1 = xmlDokument.getElementsByTagName(InputS1Node);
for (S1a = 0; S1a < InputS1[0].childNodes.length; S1a++) {
if (InputS1[0].childNodes[S1a].nodeType != 3) {
OutputMatrixNodeS1.push(InputS1[0].childNodes[S1a].nodeName);
if (InputS1[0].childNodes[S1a].firstChild.data == null || InputS1[0].childNodes[S1a].firstChild.data.indexOf(unescape('%0A')) == 0) {
OutputMatrixDataS1.push("");
} else {
OutputMatrixDataS1.push(InputS1[0].childNodes[S1a].firstChild.data);
}
}
}
}
Die Variablen OutputMatrixNodeS1 und OutputMatrixDataS1 sind als Arrays definiert und dienen dazu, die Namen der Nodes sowie die Elemente selbiger aufzunehmen. Geparst wird dabei nur in einem bestimmten Zweig der XML-Struktur.
var InputS1 = xmlDokument.getElementsByTagName(InputS1Node);
OK, jetzt verstehe ich - an dieser Stelle wird ein DOM-Objekt benötigt - der Inhalt des Textareas ist aber ja noch ein String.
Auf dieser Seite ist auch ein Script aufgeführt, welches einen String in ein DOM-Objekt überführt (unter "Load an XML String"), vielleicht hilft dir dies weiter:
http://www.w3schools.com/Dom/dom_parser.asp