XML-Zeilenumbruch
Aufsteiger
- javascript
Hallo,
Ich bin gerade dabei ein Script zu schreiben, dass eine XML einlesen und als Baum (Treeview) ausgeben soll. Dazu benutze ich eine beliebige XML-Datei, die nach folgendem Schema aufgebaut ist:
<?xml version = '1.0' encoding = 'UTF-8'?>
<tree>
<folder>String 1</folder>
<folder>Substring 1</folder>
<data>...</data>
<folder>String 2</folder>
...
... und so weiter.
Im Moment hänge ich daran fest, wie Javascript die Zeilenumbrüche der XML-Datei verarbeitet. Wenn ich über treeElement.childNodes[0] den ersten Kindknoten von <tree> einlesen will, dann bekomme ich nicht wie erwartet das erste <folder>-Element zurück. Durch ein Firefox-Plugin habe ich herausgefunden, dass statt dem Element ein String ("\n ") zurückgegeben wird, was allem Anschein nach der Zeilenumbruch nach dem Elementnamen in der XML-Datei ist. Wenn ich alle Zeilenumbrüche aus der XML-Datei entferne, dann funktioniert die ganze Angelegenheit, allerdings hab ich dann eine ganz unübersichtlich und in eine einzige Zeile gequetschte XML, die nicht soo angenehm zu bearbeiten ist.
Meine Frage: wie krieg ich das Script dazu, dass diese Zeilenumbrüche nicht mehr als Kindknoten behandelt werden?
Mit Dank an die Antworter und freundlichen Grüßen, der Aufsteiger
Hallo,
wie krieg ich das Script dazu, dass diese Zeilenumbrüche nicht mehr als Kindknoten behandelt werden?
Gar nicht, dieses Verhalten ist so standardisiert. - Prüfe beim Zugriff auf childNodes, um welchen http://de.selfhtml.org/javascript/objekte/node.htm#node_type@title=Knotentyp es sich jeweils handelt. Wenn es ein Textknoten ist, dann überspringe ihn und nehme den http://de.selfhtml.org/javascript/objekte/node.htm#next_sibling@title=nextSibling (oder besser du durchläufst childNodes mit einer for-Schleife, wenn du bestimmte Elemente suchst).
Mathias
Hallo molily, hallo Aufsteiger,
evtl. würde sich auch der Zugriff mittels getElementsByTagName anbieten. Also in dem Beispiel
<tree>
<folder>String 1</folder>
<folder>Substring 1</folder>
<data>...</data>
<folder>String 2</folder>
...
XXX.documentElement.getElementsByTagName("tree")[i].getElementsByTagName("folder")[j]
Gruß, Jürgen
Hallo,
<tree>
<folder>String 1</folder>
<folder>Substring 1</folder>
<data>...</data>
<folder>String 2</folder>
...XXX.documentElement.getElementsByTagName("tree")[i].getElementsByTagName("folder")[j]
Ja, das hatte ich vergesse zu nennen.
Wobei mich obiger Code hat stutzen lassen: Wenn das zweite folder-Element eigentlich hierarchisch unterhalb des ersten liegt, wie die Einrückung und das »Substring« andeutet, dann kann man sie nicht wirklich sinnvoll durchlaufen... Woran sieht ein Script wohl, dass das dritte folder-Element nicht untergeordnet ist?
Mathias
Hallo Mathias,
Wobei mich obiger Code hat stutzen lassen: Wenn das zweite folder-Element eigentlich hierarchisch unterhalb des ersten liegt, wie die Einrückung und das »Substring« andeutet, dann kann man sie nicht wirklich sinnvoll durchlaufen... Woran sieht ein Script wohl, dass das dritte folder-Element nicht untergeordnet ist?
ist mir auch aufgefallen. Ich vermute mal, dass das Beispiel schlecht gewählt ist. Sonst wäre die Struktur etwas überarbeitungswürdig.
Gruß, Jürgen