# Großes XML-File einlesen, darstellen und bearbeiten?!



## Loki2 (9. Dezember 2005)

Hallo,

  ich benötige mal einen kurzen Anstoß in die richtige Richtung und hoffe das ich diesen hier bekomme.

  Ich muß große XML-Dateien (12MB und größer) verarbeiten. Unter anderem muss ich diese in einem Tree darstellen allerdings nicht das komplette File sondern nur bestimmte Elemente mit bestimmten Kindern.
  Das soll sowas wie eine Auswahlliste sein.



Element1
Kind 1
Kind 2
Kind 3

Elment2


Kind 1

Kind 2

und so weiter...

  Datenänderungen werden aber an allen möglichen Stellen in dem Dokument durchgeführt. Das heißt ich muss wohl sehr oft das Dokument auch durchsuchen um immer an die richtige Stelle zu kommen schätze ich.
  Kann mir jemand einen Tipp geben welche Techniken ich am besten verwenden sollte um so große XML-Dateien zu verarbeiten?!

  Gruß und so
  Loki2


----------



## TommyMo (9. Dezember 2005)

Hi! 

Hilft dir der link weiter? Is ein Thread hier ... . 

Du wirst um das Parsen denke ich nicht herumkommen. Solltest du aber eine bessere Parsmöglichkeit finden, dann poste sie bitte, mich würds nämlich auch brennend interessieren   

Gruß
TOM


----------



## Thomas Darimont (9. Dezember 2005)

Hallo!

 Fuer die Verarbeitung von grossen XML Dokumenten bei denen nur sehr wenige Elemente wirklich verwendet werden, wuerde ich einen SAX Parser oder einen Pull Parser (http://www.xmlpull.org/, http://xerces.apache.org/xerces2-j/xni-config.html) verwenden. Das Dokument komplett in den Speicher lutschen und dann zu traversieren wuerde ich auf keinen Fall machen...

 Gruss Tom


----------



## TommyMo (9. Dezember 2005)

Stimmt, da hast du recht! Wär zu langsam denke ich. Aber wie machen die Parser das technisch Irgendwo muss ja auch Information über die Knoten vorhanden und abgelegt werden ... 

Gruß
TOM


----------



## Loki2 (10. Dezember 2005)

Hallo,

   vielen Dank für die Antworten.

 Ich habe mich damit jetzt schon mal ein bisschen beschäftigt und bin auf dieses Beispiel gestoßen:

http://www.informit.com/articles/article.asp?p=31349&seqNum=6

 Funktioinert soweit auch wunderbar allerdings ist mir nicht klar wie ich weitere Elemente rausfiltern kann.

 Ein kleiner Auszug aus meinem XML-File:


```
<SequenceContainer name="Ein Container von vielen" shortDescription="Das ist nur einer von hunderten">
 		<EntryList>
 		  <ParameterRefEntry parameterRef="Dies ist ein Parameter-Verweis">
 			<LocationInContainerInBits referenceLocation="containerStart">
 			  <FixedValue>128</FixedValue>
 			</LocationInContainerInBits>
 		  </ParameterRefEntry>
 		</EntryList>
 	  </SequenceContainer>
```
 
 Von diesem "SequenceContainer" gibt es sehr viele in dem XML-File und ich kann mir bereits sämtliche Namen und shortDescription aus dem File holen und das auch super schnell. Dafür habe ich das oben genannte Beispiel ein klein bisschen angepasst.
 Mein Problem ist jetzt das ich zu der ShortDescription und dem Namen nun auch noch sämltiche ParameterRefEntry der Container benötige.

 Wie kann ich das machen?

 Ich hoffe ihr könnt mir weiterhelfen und mich auf den richtigen Weg bringen.

   Gruß und so
   Loki2


----------

