Package com.ctc.wstx.sax
Class WstxSAXParser
- java.lang.Object
-
- javax.xml.parsers.SAXParser
-
- com.ctc.wstx.sax.WstxSAXParser
-
- All Implemented Interfaces:
DTDEventListener,org.xml.sax.Attributes,org.xml.sax.ext.Attributes2,org.xml.sax.ext.Locator2,org.xml.sax.Locator,org.xml.sax.Parser,org.xml.sax.XMLReader
public class WstxSAXParser extends javax.xml.parsers.SAXParser implements org.xml.sax.Parser, org.xml.sax.XMLReader, org.xml.sax.ext.Attributes2, org.xml.sax.ext.Locator2, DTDEventListener
This class implements parser part of JAXP and SAX interfaces; and effectively offers an alternative to using Stax input factory / stream reader combination.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static classWstxSAXParser.AttributesWrapper(package private) static classWstxSAXParser.DocHandlerWrapper(package private) classWstxSAXParser.ResolverProxySimple helper class that converts from Stax API into SAX EntityResolver call(s)
-
Field Summary
Fields Modifier and Type Field Description (package private) static booleanFEAT_DEFAULT_NS_PREFIXESprotected AttributeCollectormAttrCollectorprotected intmAttrCountNumber of attributes accessible viaAttributesandAttributes2interfaces, for the current start element.protected ReaderConfigmConfigprotected org.xml.sax.ContentHandlermContentHandlerprotected org.xml.sax.ext.DeclHandlermDeclHandlerprotected org.xml.sax.DTDHandlermDTDHandlerprotected InputElementStackmElemStackprotected java.lang.StringmEncodingprotected org.xml.sax.EntityResolvermEntityResolverprotected org.xml.sax.ErrorHandlermErrorHandlerprotected booleanmFeatNsPrefixesprotected org.xml.sax.ext.LexicalHandlermLexicalHandlerprotected intmNsCountNeed to keep track of number of namespaces, if namespace declarations are to be reported along with attributes (seemFeatNsPrefixes).protected BasicStreamReadermScannerSince the stream reader would mostly be just a wrapper around the underlying scanner (its main job is to implement Stax interface), we can and should just use the scanner.protected booleanmStandaloneprotected WstxInputFactorymStaxFactoryWe will need the factory reference mostly for constructing underlying stream reader we use.protected java.lang.StringmXmlVersion
-
Constructor Summary
Constructors Constructor Description WstxSAXParser()WstxSAXParser(WstxInputFactory sf, boolean nsPrefixes)NOTE: this was a protected constructor for versions 4.0 and 3.2; changed to public in 4.1
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidattributeDecl(java.lang.String eName, java.lang.String aName, java.lang.String type, java.lang.String mode, java.lang.String value)voiddtdComment(char[] data, int offset, int len)voiddtdElementDecl(java.lang.String name, java.lang.String model)voiddtdExternalEntityDecl(java.lang.String name, java.lang.String publicId, java.lang.String systemId)voiddtdInternalEntityDecl(java.lang.String name, java.lang.String value)voiddtdNotationDecl(java.lang.String name, java.lang.String publicId, java.lang.String systemId, java.net.URL baseURL)voiddtdProcessingInstruction(java.lang.String target, java.lang.String data)booleandtdReportComments()voiddtdSkippedEntity(java.lang.String name)voiddtdUnparsedEntityDecl(java.lang.String name, java.lang.String publicId, java.lang.String systemId, java.lang.String notationName, java.net.URL baseURL)private voidfireAuxEvent(int type, boolean inTree)private voidfireEvents()This is the actual "tight event loop" that will send all events between start and end document events.private voidfireStartTag()intgetColumnNumber()org.xml.sax.ContentHandlergetContentHandler()org.xml.sax.DTDHandlergetDTDHandler()java.lang.StringgetEncoding()org.xml.sax.EntityResolvergetEntityResolver()org.xml.sax.ErrorHandlergetErrorHandler()booleangetFeature(java.lang.String name)intgetIndex(java.lang.String qName)intgetIndex(java.lang.String uri, java.lang.String localName)intgetLength()intgetLineNumber()java.lang.StringgetLocalName(int index)org.xml.sax.ParsergetParser()java.lang.ObjectgetProperty(java.lang.String name)java.lang.StringgetPublicId()java.lang.StringgetQName(int index)ReaderConfiggetStaxConfig()Accessor used to allow configuring all standard Stax configuration settings that the underlying reader uses.java.lang.StringgetSystemId()java.lang.StringgetType(int index)java.lang.StringgetType(java.lang.String qName)java.lang.StringgetType(java.lang.String uri, java.lang.String localName)java.lang.StringgetURI(int index)java.lang.StringgetValue(int index)java.lang.StringgetValue(java.lang.String qName)java.lang.StringgetValue(java.lang.String uri, java.lang.String localName)org.xml.sax.XMLReadergetXMLReader()java.lang.StringgetXMLVersion()booleanisDeclared(int index)booleanisDeclared(java.lang.String qName)booleanisDeclared(java.lang.String uri, java.lang.String localName)booleanisNamespaceAware()booleanisSpecified(int index)booleanisSpecified(java.lang.String qName)booleanisSpecified(java.lang.String uri, java.lang.String localName)booleanisValidating()voidparse(java.lang.String systemId)voidparse(org.xml.sax.InputSource input)voidparse(org.xml.sax.InputSource is, org.xml.sax.HandlerBase hb)voidparse(org.xml.sax.InputSource is, org.xml.sax.helpers.DefaultHandler dh)voidsetContentHandler(org.xml.sax.ContentHandler handler)voidsetDocumentHandler(org.xml.sax.DocumentHandler handler)voidsetDTDHandler(org.xml.sax.DTDHandler handler)voidsetEntityResolver(org.xml.sax.EntityResolver resolver)voidsetErrorHandler(org.xml.sax.ErrorHandler handler)voidsetFeature(java.lang.String name, boolean value)voidsetLocale(java.util.Locale locale)voidsetProperty(java.lang.String name, java.lang.Object value)private voidthrowNoSuchAttribute(int index)private voidthrowSaxException(java.lang.Exception src)private voidthrowSaxException(java.lang.String msg)
-
-
-
Field Detail
-
FEAT_DEFAULT_NS_PREFIXES
static final boolean FEAT_DEFAULT_NS_PREFIXES
- See Also:
- Constant Field Values
-
mStaxFactory
protected final WstxInputFactory mStaxFactory
We will need the factory reference mostly for constructing underlying stream reader we use.
-
mConfig
protected final ReaderConfig mConfig
-
mFeatNsPrefixes
protected boolean mFeatNsPrefixes
-
mScanner
protected BasicStreamReader mScanner
Since the stream reader would mostly be just a wrapper around the underlying scanner (its main job is to implement Stax interface), we can and should just use the scanner. In effect, this class is then a replacement of BasicStreamReader, when using SAX interfaces.
-
mAttrCollector
protected AttributeCollector mAttrCollector
-
mElemStack
protected InputElementStack mElemStack
-
mEncoding
protected java.lang.String mEncoding
-
mXmlVersion
protected java.lang.String mXmlVersion
-
mStandalone
protected boolean mStandalone
-
mContentHandler
protected org.xml.sax.ContentHandler mContentHandler
-
mDTDHandler
protected org.xml.sax.DTDHandler mDTDHandler
-
mEntityResolver
protected org.xml.sax.EntityResolver mEntityResolver
-
mErrorHandler
protected org.xml.sax.ErrorHandler mErrorHandler
-
mLexicalHandler
protected org.xml.sax.ext.LexicalHandler mLexicalHandler
-
mDeclHandler
protected org.xml.sax.ext.DeclHandler mDeclHandler
-
mAttrCount
protected int mAttrCount
Number of attributes accessible viaAttributesandAttributes2interfaces, for the current start element.Note: does not include namespace declarations, even they are to be reported as attributes.
-
mNsCount
protected int mNsCount
Need to keep track of number of namespaces, if namespace declarations are to be reported along with attributes (seemFeatNsPrefixes).
-
-
Constructor Detail
-
WstxSAXParser
public WstxSAXParser(WstxInputFactory sf, boolean nsPrefixes)
NOTE: this was a protected constructor for versions 4.0 and 3.2; changed to public in 4.1
-
WstxSAXParser
public WstxSAXParser()
-
-
Method Detail
-
getParser
public final org.xml.sax.Parser getParser()
- Specified by:
getParserin classjavax.xml.parsers.SAXParser
-
getXMLReader
public final org.xml.sax.XMLReader getXMLReader()
- Specified by:
getXMLReaderin classjavax.xml.parsers.SAXParser
-
getStaxConfig
public final ReaderConfig getStaxConfig()
Accessor used to allow configuring all standard Stax configuration settings that the underlying reader uses.- Since:
- 4.0.8
-
isNamespaceAware
public boolean isNamespaceAware()
- Specified by:
isNamespaceAwarein classjavax.xml.parsers.SAXParser
-
isValidating
public boolean isValidating()
- Specified by:
isValidatingin classjavax.xml.parsers.SAXParser
-
getProperty
public java.lang.Object getProperty(java.lang.String name) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException- Specified by:
getPropertyin interfaceorg.xml.sax.XMLReader- Specified by:
getPropertyin classjavax.xml.parsers.SAXParser- Throws:
org.xml.sax.SAXNotRecognizedExceptionorg.xml.sax.SAXNotSupportedException
-
setProperty
public void setProperty(java.lang.String name, java.lang.Object value) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException- Specified by:
setPropertyin interfaceorg.xml.sax.XMLReader- Specified by:
setPropertyin classjavax.xml.parsers.SAXParser- Throws:
org.xml.sax.SAXNotRecognizedExceptionorg.xml.sax.SAXNotSupportedException
-
parse
public void parse(org.xml.sax.InputSource is, org.xml.sax.HandlerBase hb) throws org.xml.sax.SAXException, java.io.IOException- Overrides:
parsein classjavax.xml.parsers.SAXParser- Throws:
org.xml.sax.SAXExceptionjava.io.IOException
-
parse
public void parse(org.xml.sax.InputSource is, org.xml.sax.helpers.DefaultHandler dh) throws org.xml.sax.SAXException, java.io.IOException- Overrides:
parsein classjavax.xml.parsers.SAXParser- Throws:
org.xml.sax.SAXExceptionjava.io.IOException
-
getContentHandler
public org.xml.sax.ContentHandler getContentHandler()
- Specified by:
getContentHandlerin interfaceorg.xml.sax.XMLReader
-
getDTDHandler
public org.xml.sax.DTDHandler getDTDHandler()
- Specified by:
getDTDHandlerin interfaceorg.xml.sax.XMLReader
-
getEntityResolver
public org.xml.sax.EntityResolver getEntityResolver()
- Specified by:
getEntityResolverin interfaceorg.xml.sax.XMLReader
-
getErrorHandler
public org.xml.sax.ErrorHandler getErrorHandler()
- Specified by:
getErrorHandlerin interfaceorg.xml.sax.XMLReader
-
getFeature
public boolean getFeature(java.lang.String name) throws org.xml.sax.SAXNotRecognizedException- Specified by:
getFeaturein interfaceorg.xml.sax.XMLReader- Throws:
org.xml.sax.SAXNotRecognizedException
-
setContentHandler
public void setContentHandler(org.xml.sax.ContentHandler handler)
- Specified by:
setContentHandlerin interfaceorg.xml.sax.XMLReader
-
setDTDHandler
public void setDTDHandler(org.xml.sax.DTDHandler handler)
- Specified by:
setDTDHandlerin interfaceorg.xml.sax.Parser- Specified by:
setDTDHandlerin interfaceorg.xml.sax.XMLReader
-
setEntityResolver
public void setEntityResolver(org.xml.sax.EntityResolver resolver)
- Specified by:
setEntityResolverin interfaceorg.xml.sax.Parser- Specified by:
setEntityResolverin interfaceorg.xml.sax.XMLReader
-
setErrorHandler
public void setErrorHandler(org.xml.sax.ErrorHandler handler)
- Specified by:
setErrorHandlerin interfaceorg.xml.sax.Parser- Specified by:
setErrorHandlerin interfaceorg.xml.sax.XMLReader
-
setFeature
public void setFeature(java.lang.String name, boolean value) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException- Specified by:
setFeaturein interfaceorg.xml.sax.XMLReader- Throws:
org.xml.sax.SAXNotRecognizedExceptionorg.xml.sax.SAXNotSupportedException
-
parse
public void parse(org.xml.sax.InputSource input) throws org.xml.sax.SAXException- Specified by:
parsein interfaceorg.xml.sax.Parser- Specified by:
parsein interfaceorg.xml.sax.XMLReader- Throws:
org.xml.sax.SAXException
-
parse
public void parse(java.lang.String systemId) throws org.xml.sax.SAXException- Specified by:
parsein interfaceorg.xml.sax.Parser- Specified by:
parsein interfaceorg.xml.sax.XMLReader- Throws:
org.xml.sax.SAXException
-
fireEvents
private final void fireEvents() throws java.io.IOException, org.xml.sax.SAXException, javax.xml.stream.XMLStreamExceptionThis is the actual "tight event loop" that will send all events between start and end document events. Although we could use the stream reader here, there's not much as it mostly just forwards requests to the scanner: and so we can as well just copy the little code stream reader's next() method has.- Throws:
java.io.IOExceptionorg.xml.sax.SAXExceptionjavax.xml.stream.XMLStreamException
-
fireAuxEvent
private final void fireAuxEvent(int type, boolean inTree) throws java.io.IOException, org.xml.sax.SAXException, javax.xml.stream.XMLStreamException- Throws:
java.io.IOExceptionorg.xml.sax.SAXExceptionjavax.xml.stream.XMLStreamException
-
fireStartTag
private final void fireStartTag() throws org.xml.sax.SAXException- Throws:
org.xml.sax.SAXException
-
setDocumentHandler
public void setDocumentHandler(org.xml.sax.DocumentHandler handler)
- Specified by:
setDocumentHandlerin interfaceorg.xml.sax.Parser
-
setLocale
public void setLocale(java.util.Locale locale)
- Specified by:
setLocalein interfaceorg.xml.sax.Parser
-
getIndex
public int getIndex(java.lang.String qName)
- Specified by:
getIndexin interfaceorg.xml.sax.Attributes
-
getIndex
public int getIndex(java.lang.String uri, java.lang.String localName)- Specified by:
getIndexin interfaceorg.xml.sax.Attributes
-
getLength
public int getLength()
- Specified by:
getLengthin interfaceorg.xml.sax.Attributes
-
getLocalName
public java.lang.String getLocalName(int index)
- Specified by:
getLocalNamein interfaceorg.xml.sax.Attributes
-
getQName
public java.lang.String getQName(int index)
- Specified by:
getQNamein interfaceorg.xml.sax.Attributes
-
getType
public java.lang.String getType(int index)
- Specified by:
getTypein interfaceorg.xml.sax.Attributes
-
getType
public java.lang.String getType(java.lang.String qName)
- Specified by:
getTypein interfaceorg.xml.sax.Attributes
-
getType
public java.lang.String getType(java.lang.String uri, java.lang.String localName)- Specified by:
getTypein interfaceorg.xml.sax.Attributes
-
getURI
public java.lang.String getURI(int index)
- Specified by:
getURIin interfaceorg.xml.sax.Attributes
-
getValue
public java.lang.String getValue(int index)
- Specified by:
getValuein interfaceorg.xml.sax.Attributes
-
getValue
public java.lang.String getValue(java.lang.String qName)
- Specified by:
getValuein interfaceorg.xml.sax.Attributes
-
getValue
public java.lang.String getValue(java.lang.String uri, java.lang.String localName)- Specified by:
getValuein interfaceorg.xml.sax.Attributes
-
isDeclared
public boolean isDeclared(int index)
- Specified by:
isDeclaredin interfaceorg.xml.sax.ext.Attributes2
-
isDeclared
public boolean isDeclared(java.lang.String qName)
- Specified by:
isDeclaredin interfaceorg.xml.sax.ext.Attributes2
-
isDeclared
public boolean isDeclared(java.lang.String uri, java.lang.String localName)- Specified by:
isDeclaredin interfaceorg.xml.sax.ext.Attributes2
-
isSpecified
public boolean isSpecified(int index)
- Specified by:
isSpecifiedin interfaceorg.xml.sax.ext.Attributes2
-
isSpecified
public boolean isSpecified(java.lang.String qName)
- Specified by:
isSpecifiedin interfaceorg.xml.sax.ext.Attributes2
-
isSpecified
public boolean isSpecified(java.lang.String uri, java.lang.String localName)- Specified by:
isSpecifiedin interfaceorg.xml.sax.ext.Attributes2
-
getColumnNumber
public int getColumnNumber()
- Specified by:
getColumnNumberin interfaceorg.xml.sax.Locator
-
getLineNumber
public int getLineNumber()
- Specified by:
getLineNumberin interfaceorg.xml.sax.Locator
-
getPublicId
public java.lang.String getPublicId()
- Specified by:
getPublicIdin interfaceorg.xml.sax.Locator
-
getSystemId
public java.lang.String getSystemId()
- Specified by:
getSystemIdin interfaceorg.xml.sax.Locator
-
getEncoding
public java.lang.String getEncoding()
- Specified by:
getEncodingin interfaceorg.xml.sax.ext.Locator2
-
getXMLVersion
public java.lang.String getXMLVersion()
- Specified by:
getXMLVersionin interfaceorg.xml.sax.ext.Locator2
-
dtdReportComments
public boolean dtdReportComments()
- Specified by:
dtdReportCommentsin interfaceDTDEventListener- Returns:
- True, if there is a listener interested in getting comment events within DTD subset (since that's optional)
-
dtdComment
public void dtdComment(char[] data, int offset, int len)- Specified by:
dtdCommentin interfaceDTDEventListener
-
dtdProcessingInstruction
public void dtdProcessingInstruction(java.lang.String target, java.lang.String data)- Specified by:
dtdProcessingInstructionin interfaceDTDEventListener
-
dtdSkippedEntity
public void dtdSkippedEntity(java.lang.String name)
- Specified by:
dtdSkippedEntityin interfaceDTDEventListener
-
dtdNotationDecl
public void dtdNotationDecl(java.lang.String name, java.lang.String publicId, java.lang.String systemId, java.net.URL baseURL) throws javax.xml.stream.XMLStreamException- Specified by:
dtdNotationDeclin interfaceDTDEventListener- Throws:
javax.xml.stream.XMLStreamException
-
dtdUnparsedEntityDecl
public void dtdUnparsedEntityDecl(java.lang.String name, java.lang.String publicId, java.lang.String systemId, java.lang.String notationName, java.net.URL baseURL) throws javax.xml.stream.XMLStreamException- Specified by:
dtdUnparsedEntityDeclin interfaceDTDEventListener- Throws:
javax.xml.stream.XMLStreamException
-
attributeDecl
public void attributeDecl(java.lang.String eName, java.lang.String aName, java.lang.String type, java.lang.String mode, java.lang.String value)- Specified by:
attributeDeclin interfaceDTDEventListener
-
dtdElementDecl
public void dtdElementDecl(java.lang.String name, java.lang.String model)- Specified by:
dtdElementDeclin interfaceDTDEventListener
-
dtdExternalEntityDecl
public void dtdExternalEntityDecl(java.lang.String name, java.lang.String publicId, java.lang.String systemId)- Specified by:
dtdExternalEntityDeclin interfaceDTDEventListener
-
dtdInternalEntityDecl
public void dtdInternalEntityDecl(java.lang.String name, java.lang.String value)- Specified by:
dtdInternalEntityDeclin interfaceDTDEventListener
-
throwSaxException
private void throwSaxException(java.lang.Exception src) throws org.xml.sax.SAXException- Throws:
org.xml.sax.SAXException
-
throwSaxException
private void throwSaxException(java.lang.String msg) throws org.xml.sax.SAXException- Throws:
org.xml.sax.SAXException
-
throwNoSuchAttribute
private void throwNoSuchAttribute(int index)
-
-