← Prev in month ← Prev in thread

Serialization with SAX

From
Johannes Lichtenberger <>
To
Date
2009-01-15T21:29:34Z
ID
<1232054974.6741.9.camel@luna>
Thread
Serialization with SAX
Hello,

I want to be able to serialize an input XML document to an output
document. It seems to be stupid, but I want to read until the say 2000th
page-element and then skip everything. It seems I can serialize it with
something like

SAXTransformerFactory fac = (SAXTransformerFactory)TransformerFactory.newInstance();
handler = fac.newTransformerHandler();
Transformer t = handler.getTransformer();
t.setOutputProperty(OutputKeys.METHOD, "xml");
t.setOutputProperty(OutputKeys.INDENT, "yes");
handler.setResult(new StreamResult(new FileOutputStream(filename)));

Now I'm not sure how to implement something like a check against a counter within every callback-method. Something like

private long counter = 0;

/**
 * {@inheritdoc}
 */
public void startElement(String namespaceURI, String localName, String qName,
      Attributes atts) throws SAXException {
 
  if (localName.equalsIgnoreCase("page")) {
    counter++;
  }
    
  if (counter < ARTICLES) {
    // TODO: everything which really has to be done to serialize the doc.
  }
}

I'm not sure where to get the source for a full serialization implemention and add "if (counter < ARTICLES) {" to every method. Or simply how to add such a check ;-) I simply want to have 2000 pages (page-Elements with all descendants) in the output and then skip everything else.

greetings,
Johannes
← Prev in month ← Prev in thread