import org.xml.sax.InputSource; import org.xml.sax.XMLReader; import org.xml.sax.SAXException; import org.xml.sax.Attributes; import org.xml.sax.helpers.XMLReaderFactory; import org.xml.sax.ext.DefaultHandler2; import java.io.StringReader; public class EntityTest extends DefaultHandler2 { public static void main(String[] args) { String xmlFile = args[0]; EntityTest obj = new EntityTest(); obj.parseXml(xmlFile); } private void parseXml(String xmlFile) { try { XMLReader reader = XMLReaderFactory.createXMLReader(); reader.setContentHandler(this); reader.setEntityResolver(this); reader.parse(new InputSource(xmlFile)); } catch(Exception ex) { ex.printStackTrace(); } } public InputSource getExternalSubset(String name, String baseURI) { System.out.println("getExternalSubset: name -->"+name+", baseURI -->"+baseURI); StringReader strReader = new StringReader(" "); return new InputSource(strReader); } public void startElement(String uri, String localName, String qName, Attributes atts) throws SAXException { System.out.println("startElement: localName --> "+localName+", qName --> "+qName); } public void characters(char[] ch, int start, int length) throws SAXException { System.out.println("characters: "+new String(ch, start, length)); } }