# Zeilennummer in der XML - Datei



## Dinozzo (9. Mai 2008)

Hallo zusammen. 

Nachdem ich im Internet nichts brauchbares gefunden habe, wende ich mich nun an Euch....

Ich schreibe einen Parser für WSDL Dateien, dazu verwende ich die Axis2 Klassen von Apache. Mein Kunde möchte, dass bestimmte Regeln eingehalten werden, welche ich noch zusätzlich prüfen muss. Ist nun solch eine Regel nicht erfüllt, so soll eine Fehlermeldung ausgegeben werden mit der Zeilennummer. Dabei wird z.B. die Schreibweise eines Attributes mittels regEx überprüft. 

Ich denke um die Zeilennummer zu bekommen, muss ich das ganze File nochmals via SAXParser parsen. Aber wie kann ich dann zuverlässig bestimmen, ob das auch wirklich die Zeile ist, welche ich meine, da ja bestimmte Attribute mehrmals vorkommen können. 

Ich stehe vor einem riesigen Problem. Hat jemand von euch schon Erfahrungen in ähnlicher Hinsicht gemacht?

Bin für jeden Hinweis sehr dankbar......

Beste Grüsse
Dinozzo

P.s. Ich hoffe ich habe mich verständlich ausgedrückt


----------



## foobar (10. Mai 2008)

Ein Xmldokument kann nur aus einer einzigen Zeile bestehen. Whitespace zwischen den Tags wird von den Parsern ignoriert, daher haben Zeilennummern keine Bewandnis. Gib doch lieber die fehlerhaften Elemente aus.


----------



## Dinozzo (10. Mai 2008)

Ja das wäre eine Möglichkeit... 

Allerdings möchte der Kunde die Zeilennummer in welcher der "Fehler" auftritt im GUI dargestellt haben und dazu noch, dass bei einem Klick auf den Fehler die entsprechende Zeile im  Editorfenster hinterlegt wird....


----------



## foobar (10. Mai 2008)

Dinozzo hat gesagt.:
			
		

> Ja das wäre eine Möglichkeit...
> 
> Allerdings möchte der Kunde die Zeilennummer in welcher der "Fehler" auftritt im GUI dargestellt haben und dazu noch, dass bei einem Klick auf den Fehler die entsprechende Zeile im  Editorfenster hinterlegt wird....



Da spricht ja nicht dagegen. Bei einem Syntaxerror im XML-File bekommst du alle benötigten Informationen. Guck dir mal hier die Klasse DtdErrorHandler an: http://www.java-forum.org/de/viewtopic.php?p=41189


----------



## Dinozzo (11. Mai 2008)

Ja nur sind das ja nicht Syntaxfehler.....

Eine zusätzliche Regel wäre zum Beispiel dass das Attribut name="halloDu" sein muss und nicht name="_halloDu", sprich nur mit einem Buchstaben beginnen darf....

Da bekomme ich keine Angabe der Zeile zurück, da es sich ja nicht um einen Parser Fehler handelt....


----------



## Gast (15. Mai 2008)

Man könnte theoretisch die Zeilenumbrüche die im Whitespace existieren auslesen und zählen. Die Frage ist nur ob das so ohne weiteres geht und ob diese Methode zuverlässig ist. Ich habs jedenfalls noch nicht getestet. Was aber auf jeden Fall möglich wäre ist, dass du einfach alle Starttags durchzählst. 
Dadurch könnte man wenn die Datei well-printed (oder wie man das auch immer nennt wenn alle Zeilenumbrüche automatisch eingefügt werden) ist ermitteln um welche Zeile es sich handelt. 
Ist aber möglicherweise auch ungenau wenn die Doctype-Definition oder die Namespace Deklarationen über mehrere Zeilen gehen. Zudem könnten Kommentare/lange Texte das Ergebnis ebenfalls verfälschen.
Die sicherste Positionsangabe wäre meiner Meinung nach einfach zu sagen beim wie vielten Tag der Fehler auftritt aber dann viel Spaß bei der Suche.


----------

