test.TestSaxReader Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of aalto-xml Show documentation
Show all versions of aalto-xml Show documentation
Ultra-high performance non-blocking XML processor (Stax/Stax2, SAX/SAX2)
package test;
import java.io.*;
import javax.xml.parsers.SAXParser;
import org.xml.sax.*;
import org.xml.sax.ext.DeclHandler;
import org.xml.sax.ext.DefaultHandler2;
import com.fasterxml.aalto.sax.*;
/**
* Simple helper test class for checking how the parser works when
* used via SAX interface.
*/
public class TestSaxReader
{
protected TestSaxReader() { }
protected void test(File file) throws Exception
{
SAXParserFactoryImpl spf = new SAXParserFactoryImpl();
SAXParser sp = spf.newSAXParser();
MyContentHandler h = new MyContentHandler();
sp.setProperty(SAXProperty.LEXICAL_HANDLER.toExternal(), (DeclHandler) h);
InputStream in = new FileInputStream(file);
sp.parse(new InputSource(in), h);
in.close();
}
/*
////////////////////////////////////////////////
// Helper class
////////////////////////////////////////////////
*/
final static class MyContentHandler
extends DefaultHandler2
implements DeclHandler
{
public MyContentHandler() { }
@Override
public void characters(char[] ch, int start, int length)
{
System.out.print("[CHARACTERS] (len "+length+"): '");
printString(ch, start, length);
System.out.println("'");
}
@Override
public void endDocument()
{
System.out.println("[END-DOCUMENT]");
}
@Override
public void endElement(String nsUri, String localName, String qName)
{
System.out.print("[END-ELEMENT] ");
System.out.print(qName);
if (nsUri != null) {
System.out.print(" {");
System.out.print(nsUri);
System.out.print(" }");
}
System.out.println(">");
}
@Override
public void endPrefixMapping(String prefix)
{
System.out.println("[UNMAP-PREFIX '"+prefix+"']");
}
@Override
public void ignorableWhitespace(char[] ch, int start, int length)
{
System.out.println("[IGN-WS] (len "+length+")");
}
@Override
public void processingInstruction(String target, String data)
{
System.out.println("[PROC-INSTR '"+target+"' ...]");
}
@Override
public void setDocumentLocator(Locator locator) { }
@Override
public void skippedEntity(String name)
{
System.out.println("[SKIPPED-entity '"+name+"']");
}
@Override
public void startDocument()
{
System.out.println("[START-DOC]");
}
@Override
public void startElement(String nsUri, String localName, String qName, Attributes attrs)
{
System.out.print("[START-ELEMENT] (");
System.out.print(attrs.getLength());
System.out.print(" attrs) <");
System.out.print(qName);
if (nsUri != null) {
System.out.print(" {");
System.out.print(nsUri);
System.out.print(" }");
}
/*
appendName(mText, localName, qName, namespaceURI);
for (int i = 0, len = attrs.getLength(); i < len; ++i) {
mText.append(' ');
appendName(mText, attrs.getLocalName(i), attrs.getQName(i),
attrs.getURI(i));
mText.append("='");
mText.append(attrs.getValue(i));
mText.append("'");
}
*/
System.out.println(">");
}
@Override
public void startPrefixMapping(String prefix, String uri)
{
System.out.println("[MAP-PREFIX '"+prefix+"'->'"+uri+"']");
}
@Override
public void unparsedEntityDecl(String name, String publicId, String systemId, String notationName)
{
System.out.println("[UNPARSED-ENTITY-DECL '"+name+"']");
}
@Override
public void warning(SAXParseException e)
{
System.out.println("[WARNING: '"+e.getMessage()+"']");
}
// // // LexicalHandler:
@Override
public void comment(char[] ch, int start, int length)
{
System.out.print("[COMMENT] '");
printString(ch, start, length);
System.out.println("'");
}
@Override
public void endCDATA()
{
System.out.println("[END-CDATA]");
}
@Override
public void endDTD()
{
System.out.println("[END-DTD]");
}
@Override
public void endEntity(String name)
{
System.out.println("[END-ENTITY '"+name+"']");
}
@Override
public void startCDATA()
{
System.out.println("[START-CDATA]");
}
@Override
public void startDTD(String name, String publicId, String systemId)
{
System.out.print("[START-DTD ");
System.out.print(name);
System.out.println("]");
}
@Override
public void startEntity(String name)
{
System.out.println("[START-ENTITY '"+name+"']");
}
private void printString(char[] ch, int start, int length)
{
if (length < 60) {
System.out.print(new String(ch, start, length));
} else {
StringBuffer sb = new StringBuffer(64);
sb.append(ch, start, 28);
sb.append("]..[");
sb.append(ch, (start + length - 28), 28);
}
}
}
/*
////////////////////////////////////////////////
// Main method
////////////////////////////////////////////////
*/
public static void main(String[] args)
throws Exception
{
if (args.length != 1) {
System.err.println("Usage: java ... "+TestSaxReader.class+" [file]");
System.exit(1);
}
try {
new TestSaxReader().test(new File(args[0]));
System.out.println("\nDone!");
} catch (Throwable t) {
System.err.println("Error: "+t);
t.printStackTrace();
}
}
}