# Unhierarchisches XML-File mit DOM-Parser auswerten



## megalomaniac (5. Okt 2007)

Hallo zusammen,

ich versuche eine XML-Datei mit dem W3C-DOM-Parser auszuwerten. Das Problem dabei ist, dass die XML-Datei (deren Struktur ich nicht verändern kann!) nicht vollständig hierarchisch aufgebaut ist. Das heißt ich habe eine beliebige Anzahl von "Objekten", zu denen mehrere Segmente gehören, die aber kein eindeutiges gemeinsames Parent-Segment haben.

Zum Beispiel:


```
<mainSegment>

<seg1>...</seg1>  -- Anfang 1. Objekt
<seg2>...</seg2>
<seg4>...</seg4>
<seg6>...</seg6>  -- Ende 1. Objekt

<seg1>...</seg1>  -- Anfang 2. Objekt
<seg3>...</seg3>
<seg3>...</seg3>
<seg6>...</seg6>  -- Ende 2. Objekt

<seg1>...</seg1>  -- Anfang 3. Objekt
<seg6>...</seg6>  -- Ende 3. Objekt

(etc...)

</mainSegment>
```

Ich suche jetzt nach einer Möglichkeit das XML-File an einem Stück auszuwerten ohne die einzelnen Segmente durcheinander zu schmeißen. Hat da jemand eine Idee?

Danke schonmal
Jochen


----------



## tuxedo (5. Okt 2007)

Wenn jedes Objekt immer von seg1 bis seg6 geht kannst du ja in einem for oder while die XML lesen und immer 6 segmetnte zu einem Objekt zusammenfassen. Verstehe das Problem nicht wirklich....

- Alex


----------



## megalomaniac (5. Okt 2007)

Das Problem ist, dass die Segmente eben nicht immer sauber von 1 bis 6 durchnummeriert sind. Da können durchaus zwischendrin Segmente fehlen oder ein Segment mehrfach vorkommen.

Mit dem DOM-Parser hab ich ja immer nur die Möglichkeit zu sagen: "Hier ist mein Knoten! Gib mir alle anhängenden Kind-Knoten!" Und mit eben dieser Systematik komme ich hier nicht weiter...

Ich könnte jetzt natürlich hingehen, das XML in einen String konvertieren und per String-Operationen durchlatschen. Aber das geht doch sicher eleganter, wozu hab ich denn diesen blöden XML-Parser...


----------



## maki (5. Okt 2007)

> Aber das geht doch sicher eleganter, wozu hab ich denn diesen blöden XML-Parser... icon_wink.gif


Dann solten die XML Dokumente auch sauber aufgebaut sein


----------



## Murray (5. Okt 2007)

Woran erkennst du denn "beim Draufgucken" die Grenze zwischen zwei Objekten? Daran, dass Segment6 beendet wurde? Daran, dass Segment1 anfängt? Daran, dass ein Segment mit einer niedrigeren Nummer kommt als sein Vorgänger? Oder durch eine Leerzeile in der Datei? Im letzten Fall ist das wohl besser auf Textebene zu behandeln. Alles andere sollte doch möglich sein, wenn du die Child-Nodes von <mainSegment/> iterierst?


----------



## tuxedo (5. Okt 2007)

Murray hat gesagt.:
			
		

> Alles andere sollte doch möglich sein, wenn du die Child-Nodes von <mainSegment/> iterierst?



Das war ja auch mein Gedanke ...


----------

