Re: Problem with SaxParser. Works Occasionally.
"stacey" <staceyventuras@gmail.com> wrote:
<mass>922.4428373952809</mass>
The function characters:
public void characters(char buf[], int offset, int len) throws
SAXException {
String s = new String(buf, offset, len);
The s string sometimes is not as big as it should. Can we define the
offset and the len?
The problem is when it reaches the <mass> element. Sometimes it works
ok, and it reads all the number 922.4428373952809.
But other times, when let say the mass value is 1455.668578151738,
the result is just 14 .
Do you have any idea what is the error?? I can post my code, but i
didn't do it know cause this post is already too big. Maybe someone
has already encountered the error..
I have seen this error too many times to count, and corrected it several
times.
The problem is that the "characters" function is not guaranteed to be called
on a complete set of characters in the element. (The SAX implementation uses
a fixed-length char[] to read through the document. The boundary of that
array sometimes lands in the middle of a text element. You, as the
implementor of the 'characters' function in the SAXHandler, have to be
prepared for this.)
The solution is a little complex, but is something like this:
StringBuffer buf;
void startElement(...){
buf = new StringBuffer();
}
void characters(char[] buf, int offset, int length){
buf.append(buf, offset, length);
}
void endElement(...) {
String s = buf.toString();
}