1. Checking for Lexical Handler Support
try { XMLReader reader = XMLReaderFactory.createXMLReader(); LexicalHandler handler = reader.getContentHandler(); handler.startDTD(null, null, null); } catch (SAXNotSupportedException e) { // Lexical handler not supported }
2. Getting the Lexical Handler
XMLReader reader = XMLReaderFactory.createXMLReader(); LexicalHandler handler = reader.getContentHandler();
3. Implementing the Lexical Handler Interface
public class MyLexicalHandler implements LexicalHandler { public void startDTD(String name, String publicId, String systemId) { } public void endDTD() { } public void startEntity(String name) { } public void endEntity(String name) { } public void startCDATA() { } public void endCDATA() { } public void comment(char[] ch, int start, int length) { } }
4. Setting the Lexical Handler
5. Generating a Lexical Event
6. Using the Lexical Handler with a Parser
7. Detecting Declarative Event
8. Getting the Declarative Event Handler
9. Implementing the DeclHandler Interface
10. Setting the DeclHandler
11. Generating a Declarative Event
12. Using the DeclHandler with a Parser
13. Locating the Error Handler
14. Setting the Error Handler
15. Processing Error
16. Using Error Handler
17. Entity Resolver Implementation
18. Setting Entity Resolver
19. Using EntityResolver
20. Customizing DTD Validation
21. Implementing CustomValidationHandler
22. Customizing DTD Handler
23. Implementing DTDHandler
24. Using Extended Attributes
25. Checking for Property Support
26. Checking for Feature Support
27. Custom Attributes Implementation
28. Custom Attributes Registration
29. Implementing a PropertyDeclHandler
30. Setting a PropertyDeclHandler
31. Checking for PropertyDeclHandler
32. Determining the Value of a Property
33. Setting a Property
34. Implementation of SAXException
35. Throwing a Custom Exception
36. Generating a Customized SAXException
37. Using the CharacterDataHandler
38. Implementing the CharacterDataHandler Interface
39. Using XMLReader
40. Implementing the ContentHandler Interface
41. Using XMLFilter
42. Implementing the XMLFilter Interface
43. Generating Synthetic SAX
44. Using the DeclHandler2
45. Implementing the DeclHandler2 Interface
46. Using the DTDHandler2
47. Implementing DTDHandler2
48. Implementing ErrorHandler2
49. Implementing EntityResolver2
50. Implementing LexicalHandler2
XMLReader reader = XMLReaderFactory.createXMLReader(); reader.setContentHandler(new MyLexicalHandler());
LexicalHandler handler = new MyLexicalHandler(); handler.comment("This is a comment");
Parser parser = new SAXParserFactory().newSAXParser(); parser.parse("file.xml", new MyLexicalHandler());
try { XMLReader reader = XMLReaderFactory.createXMLReader(); DeclHandler handler = reader.getDeclHandler(); handler.elementDecl(null, null, null, null); } catch (SAXNotSupportedException e) { // Declarative event handler not supported }
XMLReader reader = XMLReaderFactory.createXMLReader(); DeclHandler handler = reader.getDeclHandler();
public class MyDeclHandler implements DeclHandler { public void elementDecl(String name, String model) { } public void attributeDecl(String eName, String aName, String type, String mode, String value) { } public void internalEntityDecl(String name, String value) { } public void externalEntityDecl(String name, String publicId, String systemId) { } }
XMLReader reader = XMLReaderFactory.createXMLReader(); reader.setDeclHandler(new MyDeclHandler());
DeclHandler handler = new MyDeclHandler(); handler.elementDecl("myElement", null);
Parser parser = new SAXParserFactory().newSAXParser(); parser.parse("file.xml", new MyDeclHandler());
XMLReader reader = XMLReaderFactory.createXMLReader(); ErrorHandler handler = reader.getErrorHandler();
XMLReader reader = XMLReaderFactory.createXMLReader(); reader.setErrorHandler(new MyErrorHandler());
public class MyErrorHandler implements ErrorHandler { public void warning(SAXParseException exception) { } public void error(SAXParseException exception) { } public void fatalError(SAXParseException exception) { } }
try { XMLReader reader = XMLReaderFactory.createXMLReader(); reader.parse("file.xml"); } catch (SAXException e) { ErrorHandler handler = e.getErrorHandler(); handler.fatalError(e); }
public class MyEntityResolver implements EntityResolver { public InputSource resolveEntity(String publicId, String systemId) { } }
XMLReader reader = XMLReaderFactory.createXMLReader(); reader.setEntityResolver(new MyEntityResolver());
XMLReader reader = XMLReaderFactory.createXMLReader(); reader.parse("file.xml"); // EntityResolver will be used to resolve entities
XMLReader reader = XMLReaderFactory.createXMLReader(); reader.setDTDHandler(new MyDTDHandler());
public class MyDTDHandler implements DTDHandler { public void notationDecl(String name, String publicId, String systemId) { } public void unparsedEntityDecl(String name, String publicId, String systemId, String notationName) { } }
ExtensionHandler handler = reader.getExtensionHandler(); handler.setFeature("http://xml.org/sax/features/use-attributes2", true);
try { XMLReader reader = XMLReaderFactory.createXMLReader(); reader.setFeature("http://xml.org/sax/features/validation", true); } catch (SAXNotRecognizedException e) { // Feature is not recognized } catch (SAXNotSupportedException e) { // Property not supported }
try { XMLReader reader = XMLReaderFactory.createXMLReader(); reader.getFeature("http://xml.org/sax/features/validation"); } catch (SAXNotRecognizedException e) { // Feature is not recognized } catch (SAXNotSupportedException e) { // Property not supported }
public class MyExtensionHandler implements ExtensionHandler { public Object getExtension(String uri) { } }
XMLReader reader = XMLReaderFactory.createXMLReader(); reader.setProperty("http://xml.org/sax/properties/ext-handler", new MyExtensionHandler());
public class MyPropertyDeclHandler implements PropertyDeclHandler { public void propertyDecl(String name, String value) { } }
XMLReader reader = XMLReaderFactory.createXMLReader(); reader.setPropertyDeclHandler(new MyPropertyDeclHandler());
try { XMLReader reader = XMLReaderFactory.createXMLReader(); reader.getPropertyDeclHandler(); } catch (SAXNotSupportedException e) { // PropertyDeclHandler is not supported }
XMLReader reader = XMLReaderFactory.createXMLReader(); String value = reader.getProperty("http://xml.org/sax/properties/lexical-handler");
XMLReader reader = XMLReaderFactory.createXMLReader(); reader.setProperty("http://xml.org/sax/properties/lexical-handler", new MyLexicalHandler());
public class MySAXException extends SAXException { public MySAXException(String message) { super(message); } }
try { // Some code that could throw a SAXException } catch (SAXException e) { if (e instanceof MySAXException) { // Handle the custom exception } }
SAXParseException exception = new SAXParseException("My custom exception message", null, null, 1, 1); throw exception;
XMLReader reader = XMLReaderFactory.createXMLReader(); reader.setContentHandler(new MyCharacterDataHandler());
public class MyCharacterDataHandler implements ContentHandler { public void characters(char[] ch, int start, int length) { } }
XMLReader reader = XMLReaderFactory.createXMLReader(); reader.setContentHandler(new MyContentHandler());
public class MyContentHandler implements ContentHandler { public void startDocument() { } public void endDocument() { } public void startPrefixMapping(String prefix, String uri) { } public void endPrefixMapping(String prefix) { } public void startElement(String uri, String localName, String qName, Attributes atts) { } public void endElement(String uri, String localName, String qName) { } public void characters(char[] ch, int start, int length) { } public void ignorableWhitespace(char[] ch, int start, int length) { } public void processingInstruction(String target, String data) { } public void skippedEntity(String name) { } }
XMLReader reader = XMLReaderFactory.createXMLReader(); XMLFilter filter = new MyXMLFilter(); reader.setContentHandler(filter); filter.setContentHandler(new MyContentHandler());
public class MyXMLFilter implements XMLFilter { public XMLReader getParent() { } public void setParent(XMLReader parent) { } public ContentHandler getContentHandler() { } public void setContentHandler(ContentHandler handler) { } public EntityResolver getEntityResolver() { } public void setEntityResolver(EntityResolver resolver) { } public ErrorHandler getErrorHandler() { } public void setErrorHandler(ErrorHandler handler) { } public DTDHandler getDTDHandler() { } public void setDTDHandler(DTDHandler handler) { } public ContentHandler startDocument() { } public ContentHandler endDocument() { } public ContentHandler startPrefixMapping(String prefix, String uri) { } public ContentHandler endPrefixMapping(String prefix) { } public ContentHandler startElement(String uri, String localName, String qName, Attributes atts) { } public ContentHandler endElement(String uri, String localName, String qName) { } public ContentHandler characters(char[] ch, int start, int length) { } public ContentHandler ignorableWhitespace(char[] ch, int start, int length) { } public ContentHandler processingInstruction(String target, String data) { } public ContentHandler skippedEntity(String name) { } }
XMLFilter filter = new MyXMLFilter(); filter.setParent(XMLReaderFactory.createXMLReader());
XMLReader reader = XMLReaderFactory.createXMLReader(); reader.setDeclHandler(new MyDeclHandler2());
public class MyDeclHandler2 implements DeclHandler2 { public void elementDecl(String name, String model) { } public void attributeDecl(String eName, String aName, String type, String mode, String value, boolean cdata) { } public void internalEntityDecl(String name, String value) { } public void externalEntityDecl(String name, String publicId, String systemId) { } }
XMLReader reader = XMLReaderFactory.createXMLReader(); reader.setDTDHandler(new MyDTDHandler2());
public class MyDTDHandler2 implements DTDHandler2 { public void notationDecl(String name, String publicId, String systemId) { } public void unparsedEntityDecl(String name, String publicId, String systemId, String notationName) { } }
public class MyErrorHandler2 implements ErrorHandler2 { public void warning(SAXParseException exception) { } public void error(SAXParseException exception) { } public void fatalError(SAXParseException exception) { } public void getLocalizedMessage(SAXParseException exception) { } }
public class MyEntityResolver2 implements EntityResolver2 { public InputSource resolveEntity(String publicId, String systemId) { } public InputSource resolveEntity(String name, String baseURI, String systemId) { } }
public class MyLexicalHandler2 implements LexicalHandler2 { public void startDTD(String name, String publicId, String systemId) { } public void endDTD() { } public void startEntity(String name) { } public void endEntity(String name) { } public void startCDATA() { } public void endCDATA() { } public void comment(char[] ch, int start, int length) { } public void startDTD(String name, String publicId, String systemId, String baseURI) { } public void endDTD(String name) { } public void startEntity(String name, String baseURI) { } public void endEntity(String name, String baseURI) { } }