Zagadnienie przetwarzania dokumentu XML za pomocą SaxParser - limit 2047 znaków?

Stworzyłem klasę, która rozszerza klasę SaxParser DefaultHandler. Moim zamiarem jest przechowywanie danych wejściowych XML w serii obiektów przy zachowaniu integralności danych oryginalnych danych XML. Podczas testowania zauważam, że niektóre dane węzła zostały obcięte dowolnie na wejściu.

Na przykład:

Input: <temperature>-125</temperature>  Output: <sensitivity>5</sensitivity>
Input: <address>101_State</city>             Output: <address>te</address> 

Aby jeszcze bardziej skomplikować sprawy, powyższe błędy występują „losowo” dla 1 na 100 przypadków tego samego tagu XML. Oznacza to, że wejściowy plik XML zawiera około 100 tagów, które zawierają<temperature>-125</temperature> ale tylko jeden z nich generuje wyjście<sensitivity>5</sensitivity>. Pozostałe znaczniki dokładnie wytwarzają<sensitivity>-125</sensitivity>.

Nadpisałem abstrakcyjną metodę „znaków (char [] ch, int start, int length)”, aby w prosty sposób pobrać zawartość znaków między znacznikami XML:

public void characters(char[] ch, int start, int length)
            throws SAXException {

            value = new String(ch, start, length);

            //debug
            System.out.println("'" + value + "'" + "start: " + start + "length: " + length);
        }

Moje instrukcje println dają następujące dane wyjściowe dla określonego znacznika temperatury, który powoduje błędne wyjście:

> '-12'start: 2045length: 3 '5'start:
> 0length: 1

Mówi mi to, że metody znaków są wywoływane dwukrotnie dla tego konkretnego elementu xml. Jest wywoływany raz dla wszystkich innych znaczników XML. Wartość „start” drugiej linii oznacza dla mnie, że znaki char [] są resetowane w środku tego znacznika XML. I metoda znakowa jest wywoływana ponownie z nowym char [].

Czy ktoś zna ten problem? Zastanawiałem się, czy osiągnąłem limit pojemności char []. Ale szybkie zapytanie sprawia, że ​​jest to mało prawdopodobne. Mój znak [] wydaje się resetować po ~ 2047 znakach

Dzięki,

FUNT

questionAnswers(3)

yourAnswerToTheQuestion