import java.io.ByteArrayInputStream;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.ext.DefaultHandler2;
public class XmlEntityTest {
    public static void main(String[] args) throws Exception {
        SAXParser p = SAXParserFactory.newInstance().newSAXParser();
        DefaultHandler2 h = new DefaultHandler2() {
            public void startEntity(String name) {
                System.err.println("startEntity: " + name);
            }

            public void endEntity(String name) {
                System.err.println("endEntity: " + name);
            }

            public void characters(char[] ch, int start, int length) {
                System.err.println("characters: " + new String(ch, start, length));
            }
        };
        p.setProperty("http://xml.org/sax/properties/lexical-handler", h);
        String xml = "<!DOCTYPE x [<!ENTITY e \"v\">]><x>&e;</x>";
        p.parse(new ByteArrayInputStream(xml.getBytes()), h);
    }
} 