# Neuer XML Parser!!!



## TheCreeper202 (17. Dez 2012)

hallo
ich hab heut mir mal 2-3 stündchen zeit genommen und einen xml parser geschriben
download und tutorials hier
es ist ähnlich wie jdom es kann xml zu einem dom baum parsen und diesn auch schreiben (mir tabs, zeilenumbruch, etc)
ich hoffe er gefällt euch hat zwar nich soooo viele funktionen aber bin ja erst 12
ich wäre very very very happy wenn christian ullenboom noch was über diesen parser in eine 2. auflage von java 7 mehr als eine insel schreibt


----------



## Noctarius (17. Dez 2012)

Kein Source?


----------



## Beni (17. Dez 2012)

Habe nur die API ein bisschen überflogen. Was mir aufgefallen ist: du verwendest eine Map um die Kinder eines Elementes darzustellen. Aber in einem xml-File ist es durchaus erlaubt, dass mehrere Kinder denselben Namen haben. Und die Reihenfolge wie die Elemente im File stehen, solltest du auch nicht durcheinander bringen (eine Map merkt sich normalerweise nicht, in welcher Reihenfolge sie befüllt wird).


----------



## TheCreeper202 (17. Dez 2012)

@Noctarius kommt noch
@Beni
1. ich hab Map<String, List<Element>> genauer lesen
2. für die sortierung... mh.. mal gucken was ich mache eventuell eigene map proggen


----------



## miasma (17. Dez 2012)

Irgendwo hab ich mal gelesen, dass Josh Bloch seine LinkedHashMap als eine seiner wichtigsten Implementierungen ansieht, oder besonders stolz darauf ist ;-) Bzgl. dessen, dass Maps im Normalfall ja nicht sortiert sind. Wenn es nicht die insertion order ist, bzw. auf einem Comparator basiert braucht man wohl eine Baumstrukture mit Knoten<K, V> wie etwa TreeMap. In dem Fall dürfte aber LinkedHashMap für einen preorder Durchlauf passen.


----------



## TheCreeper202 (17. Dez 2012)

danke werd ich morgen ändern


----------



## Marco13 (17. Dez 2012)

LinkedHashMap wäre da ggf. das richtige. Aber sonst... Viel indexOf und replaceAll.... es war schon fast zu erwarten, dass es ihn bei 
[XML]<test>Contents <!--No comment--> of test </test>[/XML]
raushaut, komplexere Sachen hab' ich jetzt mal noch nicht ausprobiert (hab' auch keine Ahnung davon)


----------



## Beni (18. Dez 2012)

TheCreeper202 hat gesagt.:


> @Noctarius kommt noch
> @Beni
> 1. ich hab Map<String, List<Element>> genauer lesen



:rtfm:


----------



## TheCreeper202 (18. Dez 2012)

@Marco13 danke, dass du das sagst ich hab kommentare total vergessen


----------



## Marco13 (18. Dez 2012)

Wie angedeutet: Mit indexOf, replaceAll & Co wirst du noch deinen Spaß haben. Mögliche nächste Tests:
[XML]<test>"Contents <!--\"No comment\"--> of test"</test>[/XML]
[XML]<test>"Contents <!--\"No comment\"-- of test"</test>[/XML]
[XML]<test>"Contents <!--No comment\"-- of test"</test>[/XML]
....


----------



## Marcinek (18. Dez 2012)

Welche Vorteile bietet mir dieser Parser, der in wenigen Stunden geschrieben wurde, zu einem Jahrelang von Profis entwickelten?

Und warum sollte man über ein Projekt von mehreren Stunden, in einem Buch schreiben?

Ich finde es ja toll, als eine Art Freizeitprojekt um zu sehen, welche Hürden auf einen zukommen, wenn man sich damit beschäftigt. - Aber dann würde ich ja eher Wert auf den Quellcode legen, als über irgentwelche mini Funktionalitäten für Textdateien, die zufällig so aussehen wie eine XML Datei..

Lade bitte deinen Quellcode hoch, damit wir den Bewerten können.


----------



## Noctarius (18. Dez 2012)

Also ich sehe das ähnlich wie Marcinek, das XML Format ist komplizierter als man auf den ersten Blick denkt.


----------



## Marco13 (18. Dez 2012)

Marcinek hat gesagt.:


> Lade bitte deinen Quellcode hoch, damit wir den Bewerten können.



*hust* 

EDIT: BTW: Weitere mögliche Tests (die ich oben mit "komplizierteren Sachen" meinte) wäre z.B. alles, was mit CDATA-Blöcken zu tun hat...


----------



## KSG9|sebastian (18. Dez 2012)

XML-Parser...

Wir hätten da:

(J)DOM - DOM-basierter Zugriff, sehr schöne API um auf XML zuzugreifen, halt nicht geeignet für große XML-Bäume
SAX - Event-basiert, nicht so "schöner" Zugriff, dafür auch mit Gigabyte von XMLs möglich
STAX - guter Mittelweg, Cursor-basiertes navigieren durch XML u.s.w.

Wir haben mal eine Analyse gefahren (für SEPA, Gigabyteweise XML-Dateien..) welcher Parser für welche Größe taugt...und da frage ich mich halt: Was kann dieser Parser hier besser als die drei oben genannten?


----------



## fastjack (18. Dez 2012)

> ch hab heut mir mal 2-3 stündchen zeit genommen und einen xml parser geschriben



Naja... Was machst Du eigentlich morgen?


----------



## Gast2 (18. Dez 2012)

Und deine Seite hat kein richtiges Impressum. Unter Impressum wird nur auf das Webbuilder Framework hingewiesen.


----------



## Robokopp (18. Dez 2012)

fastjack hat gesagt.:


> Naja... Was machst Du eigentlich morgen?



:lol:


----------



## Gast2 (18. Dez 2012)

Robokopp hat gesagt.:


> :lol:



Naja also er ist nunmal trotzdem erst 12. Über Sinn und Unsinn wurde ja nun genug geprochen.


----------



## TheCreeper202 (18. Dez 2012)

UPDATE IST RAUS
- Kommentare
- LinkedHashMap's
- Die Sources sind hochgeladen und auf dev-xgamespro.jimdo.com verlinkt (wenn du keinen bock hast das "Hier" zu finden klick hier)


----------



## fastjack (18. Dez 2012)

Hab ich übersehen, daß Du 12 bist. sry


----------



## Marco13 (18. Dez 2012)

Hatte ja schon einiges gesagt (das soll ja auch alles nicht zuuu demotivierend klingen) aber... Bei sowas wie
if (ds_.matches("standalone=\"(.*?)\"")) {
würde er sich schon mit einem
[XML]standalone    =     true[/XML]
verschlucken_


----------



## TheCreeper202 (18. Dez 2012)

Marco13 hat gesagt.:


> Hatte ja schon einiges gesagt (das soll ja auch alles nicht zuuu demotivierend klingen) aber... Bei sowas wie
> if (ds_.matches("standalone=\"(.*?)\"")) {
> würde er sich schon mit einem
> [XML]standalone    =     true[/XML]
> verschlucken_


_
wieso? es klappt doch, also?_


----------



## Marco13 (18. Dez 2012)

Auch mit den Leerzeichen zwischen dem Wort und dem = ? (Ich verwende nicht so oft RegEx, vielleicht liegt's daran  )


----------



## TheCreeper202 (18. Dez 2012)

oh das muss noch geändert werden für is egal wie viele leers kann man [\\p{Blank}]* nehmen

EDIT:
so jetzt hab ichs geändert


----------



## Marcinek (18. Dez 2012)

Ich hätte gerne trotzdem definiert, welches Ziel hier verfolgt wird. :idea:


----------



## Marco13 (18. Dez 2012)

TheCreeper202 hat gesagt.:


> so jetzt hab ichs geändert



Wie schon angedeutet wurde solltest du dir nicht einreden, dass das in absehbarer Zeit ein Parser wird, der "alles, was gültiges XML ist" versteht, oder er in irgendeiner anderen, formal-kühl-technischen Sicht "gut" wird (RegEx ist BTW auch nicht das schnellste...), und das mit der Java Insel wird wohl auch nichts, aber ... als ich 12 war, habe ich mich gefreut, als 

```
10 PRINT "64 * 46"
20 PRINT "ergibt"
30 PRINT 64*64
```
in der letzten Zeile wirklich 4096 ausgegeben hat  
(Wir brauchen _unbedingt_ BASIC-Code-Tags!!! :reflect: )


----------



## Bernd Hohmann (18. Dez 2012)

@TO: Im Prinzip hast Du recht wenn Du einen neuen, eigenen XML-Parser schreiben willst denn was auf dem Markt an Parsern existiert ist überwiegend Schrott. Und diese Parser sind Schrott, weil XML für die real existierende Datenverarbeitung Schrott ist weil die Specs von gelangweilten Leuten geschrieben wurden die sich keine Gedanken darüber gemacht haben wie Datenverarbeitung "im wirklichen Leben" läuft.

Dein Problem ist, dass XML niemals perfekt verarbeitet werden kann (entweder ist das File zu gross oder zu schmutzig oder der Server für das DTD antwortet nicht).

Ich habe mittlerweile alle Vorkommnisse von XML wieder erfolgreich auf CSV reduziert und die Gegenseite(n) haben es mir gedankt.

Bernd


----------



## TheCreeper202 (19. Dez 2012)

ich verwende auch überwiegend csv und eigene dateien formate für archive (zip, rar, 7z, gzip könnt ja jeder öffnen)


----------



## Noctarius (20. Dez 2012)

TheCreeper202 hat gesagt.:


> ich verwende auch überwiegend csv und eigene dateien formate für archive (zip, rar, 7z, gzip könnt ja jeder öffnen)



Security by Obscurity hat noch nie funktioniert, sowas ist dir aber klar, oder?

Zeig mal so eine Datei, mal schauen ob man rausbekommt was da drin ist ;-)


----------



## TheCreeper202 (20. Dez 2012)

```
CIP    	STARTFILE    Yn`rr>@P}￾rq;￾￾Yn`rr>@P}￾rq ENDFILE
```
@Noctarius kannst du das entschlüsseln?


----------



## Noctarius (20. Dez 2012)

Jetzt sag mir bitte nicht dein "Pack"-Format speichert Plaintext? Oo Wenn nicht, dann gib mir das Ding als File, ich will da mit nem Hexeditor ran.


----------



## TheCreeper202 (20. Dez 2012)

das besteht aus DataOutputStream und jedes char in einer gepackten datei wird 13 weiter gemacht a -> n


----------



## Noctarius (20. Dez 2012)

Also Plaintext?


----------



## ARadauer (20. Dez 2012)

Cäser chiffre ist keine security.... Das ist einfach nur ein anfängerbeispiel....


----------

