# SAX-Parser beenden?



## MiMa (17. Jun 2020)

Manchmal kommt es vor, das durch eine Datenbankabfrage in einer XML nicht "*einen*" Datensatz zurück gegeben wird, sondern auch schon mal "*zwei*"

```
...
...
<version>1.1</version>
<numberOfRecords>2</numberOfRecords>
<records>
<record>
...
...
```
Mir ist es aufgefallen, als ich mir die falschen Werte nicht erklären konnte.
Ich könnte bei dem End-Tag von Record abbrechen oder bei einer Prüfung des Wertes.

In beiden fällen müsste ich den Parser beenden oder abbrechen.
Ich möchte nachfragen, ob mir jemand dabei helfen könnte?
Ich habe zwar Lösungen gefunden, die schon zig Jahre alt sind, die ich aber auch nicht wirklich verstanden habe.
Vielleicht gibt es da heute auch noch ganz andere Möglichkeiten die auch nicht so kompliziert sind?

Danke
Mi


----------



## Barista (17. Jun 2020)

MiMa hat gesagt.:


> Ich habe zwar Lösungen gefunden, die schon zig Jahre alt sind, die ich aber auch nicht wirklich verstanden habe.
> Vielleicht gibt es da heute auch noch ganz andere Möglichkeiten die auch nicht so kompliziert sind?



Mich hat auch schon getört, dass man einen SAX-Parser nicht anhalten/abbrechen kann.

Ich habe immer eine Exception zum Abbrechen geworfen.


----------



## MiMa (17. Jun 2020)

Ja sowas in der Art habe ich auch im Netz gelesen und nicht wirklich was verstanden.
Exceptions war für mich auf immer ein Thema, welches ich gerne aufgeschoben habe    und wollte es jetzt eigentlich nicht nachholen.
Ich hatte gehofft es gäbe da mittlerweile etwas um es einfacher zu handhaben da die Artikel die ich gefunden hatte von 2000-2005 waren.


----------



## MiMa (17. Jun 2020)

Habe eine variable "parsen" vom typ boolean definiert und bei Start auf true gesetzt.
In den if-Anweisungen habe ich dann diese ergänzt.

```
.. && parsen == true) {
    ..
}
```
An dem punkt wo ich abbrechen möchte setzte ich diese einfach auf false und dann sollte es ohne Änderungen an den bestehenden Werten durchlaufen.
Mal sehen ob es klappt


----------



## fhoffmann (17. Jun 2020)

MiMa hat gesagt.:


> .. && parsen == true


hier genügt auch

```
.. && parsen
```
Spätestens, wenn du einmal versehentlich geschrieben hast

```
.. && parsen = true
```
und stundenlang den Fehler gesucht hast, wirst du diesen Hinweis beachten.

Ich denke aber, das das, was du vorhast, funktioniert. Es ist dennoch schade, das man den SAX-Parser nicht stoppen kann und unnötige Funktionsaufrufe auf diese Art ignorieren muss.


----------



## MiMa (17. Jun 2020)

Danke für den Tipp, das werde ich auch so implementieren.
Das ausschalten des Parsers hat so ganz gut funktioniert.


----------

