import javax.xml.parsers.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
import java.util.*;
import java.io.*;
public class JavaExampleSAXPARSER extends DefaultHandler
{
static String TxtToDisp[] = new String[1000];
static int TxtLns = 0;
static String Indnt = "";
public static void parseDocument(String FileNme)
{
JavaExampleSAXPARSER SAXEvntHndlr = new JavaExampleSAXPARSER();
SAXParserFactory PrsrFctry = SAXParserFactory.newInstance();
XMLReader XmlRdr = null;
try
{
SAXParser SxPrsr = PrsrFctry.newSAXParser();
XmlRdr = SxPrsr.getXMLReader();
}
catch (Exception e1)
{
System.err.println(e1);
System.exit(1);
}
XmlRdr.setContentHandler(SAXEvntHndlr);
XmlRdr.setErrorHandler(SAXEvntHndlr);
try
{
String Pth = new File(FileNme).getAbsolutePath();
XmlRdr.parse("file:" + Pth);
}
catch (SAXException e1)
{
System.err.println(e1.getMessage());
System.exit(1);
}
catch (IOException IOE)
{
System.err.println(IOE);
System.exit(1);
}
}
public void startDocument()
{
TxtToDisp[TxtLns] = Indnt +"<?xml version=\"1.0\" encoding=\"UTF-8\"?>";TxtLns++;
}
public void startElement(String FlName, String LclNme, String QlifiedNme, Attributes Attrbt)
{
TxtToDisp[TxtLns] = Indnt + "<" +QlifiedNme;
Indnt += " ";
if (Attrbt != null)
{
int NmbrAttrbts = Attrbt.getLength();
for (int loopIndx = 0;loopIndx<NmbrAttrbts;loopIndx++)
{
TxtToDisp[TxtLns] += " ";
TxtToDisp[TxtLns] +=Attrbt.getLocalName(loopIndx);
TxtToDisp[TxtLns] += "=\"";
TxtToDisp[TxtLns] +=Attrbt.getValue(loopIndx);
TxtToDisp[TxtLns] += "\"";
}
}
TxtToDisp[TxtLns] += ">";
TxtLns++;
}
public void characters(char TxtCh[], int TxtStrt, int TxtLngth)
{
String TxtData = (new String(TxtCh,TxtStrt,TxtLngth));
TxtData = TxtData.trim();
if(TxtData.length() > 0 && TxtData.indexOf("\n") < 0)
{
TxtToDisp[TxtLns] = Indnt;
TxtToDisp[TxtLns] += TxtData;
TxtLns++;
}
}
public void endElement(String FlName, String LclNme, String QlifiedNme)
{
Indnt = Indnt.substring(0, Indnt.length() - 4);
TxtToDisp[TxtLns] = Indnt + "</"+ QlifiedNme + ">";
TxtLns++;
}
public void processingInstruction(String PINAME, String PIDATA)
{
TxtToDisp[TxtLns] = Indnt + "<?" + PINAME;
if (PIDATA != null && PIDATA.length() > 0)
{
TxtToDisp[TxtLns] += " ";
TxtToDisp[TxtLns] += PIDATA;
}
TxtToDisp[TxtLns] += "?>";
TxtLns++;
}
public void warning(SAXParseException e2)
{
System.err.println("SAX WARNING" + e2.getMessage());
}
public void error(SAXParseException e3)
{
System.err.println("SAX ERROR " +e3.getMessage());
System.exit(1);
}
public void fatalError(SAXParseException e3)
{
System.err.println("FATAL SAX ERROR " +e3.getMessage());
System.exit(1);
}
public static void main(String as[])
{
parseDocument(as[0]);
for(int indx = 0; indx < TxtLns; indx++)
{
System.out.println(TxtToDisp[indx]);
}
}
}