XMLPrettyPrinter3
import org.xml.sax.*;
import org.xml.sax.helpers.*;
import java.io.*;
public class XMLPrettyPrinter3 extends XMLPrettyPrinter2
implements DocumentHandler {
public XMLPrettyPrinter3(Writer out) {
super(out);
}
public XMLPrettyPrinter3(OutputStream out) {
super(out);
}
public void startElement(String name, AttributeList attributes)
throws SAXException {
try {
flushTextBuffer();
indent();
out.write("<" + name);
for (int i = 0; i < attributes.getLength(); i++) {
out.write(" ");
out.write(attributes.getName(i));
out.write("=\"");
out.write(attributes.getValue(i));
out.write("\"");
}
out.write(">\r\n");
depth++;
}
catch (IOException e) {
throw new SAXException(e);
}
}
// Could easily have put main() method in a separate class
public static void main(String[] args) {
Parser parser;
try {
parser = ParserFactory.makeParser();
}
catch (Exception e) {
// fall back on Xerces parser by name
try {
parser = ParserFactory.makeParser(
"org.apache.xerces.parsers.SAXParser");
}
catch (Exception ee) {
System.err.println("Couldn't locate a SAX parser");
return;
}
}
if (args.length == 0) {
System.out.println(
"Usage: java XMLPrettyPrinter3 URL1 URL2...");
}
// Install the Document Handler
parser.setDocumentHandler(new XMLPrettyPrinter3(System.out));
// start parsing...
for (int i = 0; i < args.length; i++) {
try {
parser.parse(args[i]);
}
catch (SAXParseException e) { // well-formedness error
System.out.println(args[i] + " is not well formed.");
System.out.println(e.getMessage()
+ " at line " + e.getLineNumber()
+ ", column " + e.getColumnNumber());
}
catch (SAXException e) { // some other kind of error
System.out.println(e.getMessage());
}
catch (IOException e) {
System.out.println("Could not report on " + args[i]
+ " because of the IOException " + e);
}
}
}
}