XML parsen in JS

Gast #5237330
Lesenswert?

Hallo Leute.

Ich habe eine Frage an die Programmierer/Skripter unter Euch.

Ich möchte eine XML-Datei mittels Javascript auslesen.
Dabei soll ein HTML-Input dazu dienen, den eingegebenen Wert in allen 
Nodes des XML zu suchen und vom gefundenen Element alle Werte ausgeben.

XML:
1
<system-data-structure>
2
  <staff-listing>
3
    <section>1</section>
4
    <abbr>AK</abbr>
5
    <name>Anna</name>
6
        </staff-listing>
7
        <staff-listing>
8
    <section>1</section>
9
    <abbr>KW</abbr>
10
    <name>Bernd</name>
11
        </staff-listing>
12
</system-data-structure>

Gebe ich nun in das Inputfeld in HTML (<input type="text" id="term">) 
z.B. "Be" (für Bernd) ein und klicke auf den Search-Button, soll in die 
div "result" der komplette Datensatz von "Bernd" aufgelistet werden, 
also Section, Abbr und Name.

Könnt ihr mir weiterhelfen?

Vielen Dank!
Gast #5237493
Lesenswert?

Viktor schrieb:

> Dabei soll ein HTML-Input dazu dienen, den eingegebenen Wert in allen
> Nodes des XML zu suchen und vom gefundenen Element alle Werte ausgeben.

Bedenke, daß das für eine Handvoll Datensätze sicherlich gehen wird, 
aber für größere Datenmengen wird das schnarchlangsam, egal wie gut Dein 
Auswerter geschrieben ist. XML ist als Datenbankformat ungeeignet.
Gast #5237763
Lesenswert?

Hallo Daniel, vielen Dank erstmal für deine Mühe!

Ich habe nun mal deinen Code entsprechend an die Suchfelder angepasst, 
die durchsucht werden sollen.

Ich habe sie entsprechend in update() geschrieben.

Ich schicke hier mal meinen Code, damit man das vielleicht besser 
nachvollziehen kann.

Entscheidend ist index.html,   data/data.xml und js/search.js.

Bei mir läuft das irgendwie nicht wie es soll, da nichtmal irgendeine 
Augabe stattfindet wie bei dir. :(


Kannst du helfen?

Danke!
Angehängte Dateien:
#5238512
Lesenswert?

Die Daten in der Datei data.xml müssen irgendwie geladen werden. Dies 
ist mit den fetch oder XMLHttpRequest APIs möglich. Zudem müssen die 
Teile des Scripts, welche auf HTML elemente zugreifen, erst ausgeführt 
werden, nachdem diese geladen wurden. Dazu kann man die Ausführung des 
gesamten Scriptes zu dem Zeitpunkt verzögern, an welchem die ganze HTML 
Datei geladen wurde, indem man das defer attribut des Script tags 
verwendet. Ich habe deinen Code mal noch etwas Angepasst, siehe Anhang.

Ganz Ideal ist es aber noch nicht. Einige der APIs, wie z.B. die 
DOMParser API funktionieren nur in relativ neuen Browsern. Das 
eingelesene XML Document dient nur dem Speichern von Daten, aber auf 
diese zuzugreifen ist relativ Umständlich. Eventuell würde es sinn 
machen dieses in ein DTO oder POJO umzuwandeln, um einfacher mit den 
Daten umgehen zu können, oder statt XML Json zu verwenden. Und falls die 
GUI Complexer werden sollte könnten Templating Frameworks nützlich 
werden.
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren