wert IN einem tag einlesen/schreiben

javanoob88

Aktives Mitglied
Hallo,

1.) Ich wüsste gerne, wie man einen Wert in (und nicht zwischen) einem Tag einlesen kann. Wenn ich am Anfang zum Beispiel den DTD Pfad und das root Element einlesen will. Oder wenn ich ein Tag in der Art <XYZ ID="1"> habe und hier die 1 einlesen will.
Will einen Parser und Writer schreiben, wo ich dann eben auch die Dinge einlese, sie im Pasrer sette und dann im Writer mit get hole.

2.) Muss ich für alle öffnenden Tags Fälle machen oder läuft es einfach so, dass wenn ich ein Tag nicht mit meinem Parser behandle, wird es einfach ignoriert und nichts passiert? Mir geht es z.b. um die erste Zeile meines XML Files mit <?xml version...> weil die ja eigtl nicht eingelesen werden muss, weil sie immer gleich ist?!?
 
Wenn du nur Interesse an einem geparsten XML-AST hast, dann würde ich eine fertige Lib benutzen - dafür gibt es genug.
Wenn es dir um den Parser geht, dann musst du dir im klaren sein, dass es sehr aufwendig werden kann einen zu entwickeln.

Am einfachsten ist es nach
Code:
<
und
Code:
>
zu suchen - am besten mit Regex. Wenn du diese Zeichen hast, dann weißt du auch was im und was zwischen den Tags steht. Mit Regex kannst du nun ganz einfach die Attribute parsen, da sie ja immer das gleiche Format haben:
Code:
<Identifier>="<Identifier>"
. Und schon ist ein primitiver Parser fertig. Wenn es natürlich darum geht, auch die Validität der XML-Datei zu prüfen um Fehler zu erkennen, dann wird es mit Regex eigentlich unmöglich. Die einfachste Lösung ist hier dann ein Top-Down-Parser der zum Entwickeln allerdings schon ein wenig schwerer als ein Regex basierter Parser ist. Kannst dich hierfür ja mal nach EBNF erkundigen. Das ist dann aber wie gesagt eine Menge Arbeit...
 
Ich benutze ja eine fertige Lib, aber da stehen mir meines Wissens nur Werkzeuge zur Verfügung, die es ermöglichen, den Inhalt zwischen den Tags zu lesen. Benutze einen speziellen SAX Parser, bei dem das ganze mit startTag und endTag funktioniert. Sprich: Ich hole mir die Werte mit startTag und atts.getValue und füge sie bei endTag meinem Objekt hinzu.
Ich dachte eigentlich, dass alle SAX Parser ungefähr gleich funktionieren und dass bei der ganzen XML Geschichte immer wieder die gleichen Probleme auftreten...
 
Ich hab noch nie einen fertiger XML-Parser benutzt, weshalb ich dir da keinen Empfehlen kann. Hier findest du aber eine kleine Übersicht. Muss das unbedingt ein SAX- oder kann es auch ein DOM-basierter Parser sein? Letztere dürften nämlich einfacher anzusteuern sein.
 

Zurück
Oben