BAFInputStream bafIn = new BAFInputStream(rawStream); bafIn.reset(); // clear internal BAF position InputSource src = new InputSource(bafIn); reader.parse(src); If “xxx” represents dynamic content (e.g., CDATA, binary chunks), ensure SAX’s characters() method is not splitting chunks. Override it to accumulate text:
xmllint --noout yourfile.xml If errors exist, fix unclosed tags or illegal characters first. If you reuse a SAX parser, never just call parse() again without resetting: baf sax xxx moves fix
@Override public void startElement(String uri, String localName, String qName, Attributes attributes) currentValue.setLength(0); // reset for new element System.out.println("Move to: " + qName); BAFInputStream bafIn = new BAFInputStream(rawStream); bafIn
@Override public void characters(char[] ch, int start, int length) currentValue.append(ch, start, length); BAFInputStream bafIn = new BAFInputStream(rawStream)
public void characters(char[] ch, int start, int length) accumulator.append(ch, start, length);