Methods Summary |
---|
public void | attributeDecl(java.lang.String elementName, java.lang.String attributeName, java.lang.String type, java.lang.String[] enumeration, java.lang.String defaultType, com.sun.org.apache.xerces.internal.xni.XMLString defaultValue, com.sun.org.apache.xerces.internal.xni.XMLString nonNormalizedDefaultValue, com.sun.org.apache.xerces.internal.xni.Augmentations augs)An attribute declaration.
try {
// SAX2 extension
if (fDeclHandler != null) {
// used as a key to detect duplicate attribute definitions.
String elemAttr = new StringBuffer(elementName).append("<").append(attributeName).toString();
if(fDeclaredAttrs.get(elemAttr) != null) {
// we aren't permitted to return duplicate attribute definitions
return;
}
fDeclaredAttrs.put(elemAttr, Boolean.TRUE);
if (type.equals("NOTATION") ||
type.equals("ENUMERATION")) {
StringBuffer str = new StringBuffer();
if (type.equals("NOTATION")) {
str.append(type);
str.append(" (");
}
else {
str.append("(");
}
for (int i = 0; i < enumeration.length; i++) {
str.append(enumeration[i]);
if (i < enumeration.length - 1) {
str.append('|");
}
}
str.append(')");
type = str.toString();
}
String value = (defaultValue==null) ? null : defaultValue.toString();
fDeclHandler.attributeDecl(elementName, attributeName,
type, defaultType, value);
}
}
catch (SAXException e) {
throw new XNIException(e);
}
|
public void | characters(com.sun.org.apache.xerces.internal.xni.XMLString text, com.sun.org.apache.xerces.internal.xni.Augmentations augs)Character content.
// if type is union (XML Schema) it is possible that we receive
// character call with empty data
if (text.length == 0) {
return;
}
try {
// SAX1
if (fDocumentHandler != null) {
// REVISIT: should we support schema-normalized-value for SAX1 events
//
fDocumentHandler.characters(text.ch, text.offset, text.length);
}
// SAX2
if (fContentHandler != null) {
fContentHandler.characters(text.ch, text.offset, text.length);
}
}
catch (SAXException e) {
throw new XNIException(e);
}
|
public void | comment(com.sun.org.apache.xerces.internal.xni.XMLString text, com.sun.org.apache.xerces.internal.xni.Augmentations augs)A comment.
try {
// SAX2 extension
if (fLexicalHandler != null) {
fLexicalHandler.comment(text.ch, 0, text.length);
}
}
catch (SAXException e) {
throw new XNIException(e);
}
|
public void | doctypeDecl(java.lang.String rootElement, java.lang.String publicId, java.lang.String systemId, com.sun.org.apache.xerces.internal.xni.Augmentations augs)Notifies of the presence of the DOCTYPE line in the document.
fInDTD = true;
try {
// SAX2 extension
if (fLexicalHandler != null) {
fLexicalHandler.startDTD(rootElement, publicId, systemId);
}
}
catch (SAXException e) {
throw new XNIException(e);
}
// is there a DeclHandler?
if(fDeclHandler != null) {
fDeclaredAttrs = new SymbolHash();
}
|
public void | elementDecl(java.lang.String name, java.lang.String contentModel, com.sun.org.apache.xerces.internal.xni.Augmentations augs)An element declaration.
try {
// SAX2 extension
if (fDeclHandler != null) {
fDeclHandler.elementDecl(name, contentModel);
}
}
catch (SAXException e) {
throw new XNIException(e);
}
|
public void | endCDATA(com.sun.org.apache.xerces.internal.xni.Augmentations augs)The end of a CDATA section.
try {
// SAX2 extension
if (fLexicalHandler != null) {
fLexicalHandler.endCDATA();
}
}
catch (SAXException e) {
throw new XNIException(e);
}
|
public void | endDTD(com.sun.org.apache.xerces.internal.xni.Augmentations augs)The end of the DTD.
fInDTD = false;
try {
// SAX2 extension
if (fLexicalHandler != null) {
fLexicalHandler.endDTD();
}
}
catch (SAXException e) {
throw new XNIException(e);
}
if(fDeclaredAttrs != null) {
// help out the GC
fDeclaredAttrs.clear();
}
|
public void | endDocument(com.sun.org.apache.xerces.internal.xni.Augmentations augs)The end of the document.
try {
// SAX1
if (fDocumentHandler != null) {
fDocumentHandler.endDocument();
}
// SAX2
if (fContentHandler != null) {
fContentHandler.endDocument();
}
}
catch (SAXException e) {
throw new XNIException(e);
}
|
public void | endElement(com.sun.org.apache.xerces.internal.xni.QName element, com.sun.org.apache.xerces.internal.xni.Augmentations augs)The end of an element.
try {
// SAX1
if (fDocumentHandler != null) {
fDocumentHandler.endElement(element.rawname);
}
// SAX2
if (fContentHandler != null) {
fAugmentations = augs;
String uri = element.uri != null ? element.uri : "";
String localpart = fNamespaces ? element.localpart : "";
fContentHandler.endElement(uri, localpart,
element.rawname);
if (fNamespaces) {
endNamespaceMapping();
}
}
}
catch (SAXException e) {
throw new XNIException(e);
}
|
public void | endExternalSubset(com.sun.org.apache.xerces.internal.xni.Augmentations augs)The end of the DTD external subset.
endParameterEntity("[dtd]", augs);
|
public void | endGeneralEntity(java.lang.String name, com.sun.org.apache.xerces.internal.xni.Augmentations augs)This method notifies the end of an entity. The DTD has the pseudo-name
of "[dtd]" parameter entity names start with '%'; and general entity
names are just the entity name.
Note: Since the document is an entity, the handler
will be notified of the end of the document entity by calling the
endEntity method with the entity name "[xml]" after calling
the endDocument method. When exposing entity boundaries through the
SAX API, the document entity is never reported, however.
Note: This method is not called for entity references
appearing as part of attribute values.
try {
// Only report endEntity if this entity was actually read.
if (augs == null || !Boolean.TRUE.equals(augs.getItem(Constants.ENTITY_SKIPPED))) {
// SAX2 extension
if (fLexicalHandler != null) {
fLexicalHandler.endEntity(name);
}
}
}
catch (SAXException e) {
throw new XNIException(e);
}
|
protected final void | endNamespaceMapping()Send endPrefixMapping events
int count = fNamespaceContext.getDeclaredPrefixCount();
if (count > 0) {
for (int i = 0; i < count; i++) {
fContentHandler.endPrefixMapping(fNamespaceContext.getDeclaredPrefixAt(i));
}
}
|
public void | endParameterEntity(java.lang.String name, com.sun.org.apache.xerces.internal.xni.Augmentations augs)This method notifies the end of an entity. The DTD has the pseudo-name
of "[dtd]" parameter entity names start with '%'; and general entity
names are just the entity name.
Note: Since the document is an entity, the handler
will be notified of the end of the document entity by calling the
endEntity method with the entity name "[xml]" after calling
the endDocument method. When exposing entity boundaries through the
SAX API, the document entity is never reported, however.
Note: This method is not called for entity references
appearing as part of attribute values.
try {
// Only report endEntity if this entity was actually read.
if (augs == null || !Boolean.TRUE.equals(augs.getItem(Constants.ENTITY_SKIPPED))) {
// SAX2 extension
if (fLexicalHandler != null && fLexicalHandlerParameterEntities) {
fLexicalHandler.endEntity(name);
}
}
}
catch (SAXException e) {
throw new XNIException(e);
}
|
public void | externalEntityDecl(java.lang.String name, com.sun.org.apache.xerces.internal.xni.XMLResourceIdentifier identifier, com.sun.org.apache.xerces.internal.xni.Augmentations augs)An external entity declaration.
String publicId = identifier.getPublicId();
String literalSystemId = identifier.getLiteralSystemId();
String expandedSystemId = identifier.getExpandedSystemId();
try {
// SAX2 extension
if (fDeclHandler != null) {
fDeclHandler.externalEntityDecl(name, publicId, ((resolve_dtd_uris) ? expandedSystemId : literalSystemId));
}
}
catch (SAXException e) {
throw new XNIException(e);
}
|
public com.sun.org.apache.xerces.internal.xs.AttributePSVI | getAttributePSVI(int index)
return (AttributePSVI)fAttributesProxy.fAttributes.getAugmentations(index).getItem(Constants.ATTRIBUTE_PSVI);
|
public com.sun.org.apache.xerces.internal.xs.AttributePSVI | getAttributePSVIByName(java.lang.String uri, java.lang.String localname)
return (AttributePSVI)fAttributesProxy.fAttributes.getAugmentations(uri, localname).getItem(Constants.ATTRIBUTE_PSVI);
|
public org.xml.sax.ContentHandler | getContentHandler()Return the current content handler.
return fContentHandler;
|
public org.xml.sax.DTDHandler | getDTDHandler()Return the current DTD handler.
return fDTDHandler;
|
protected org.xml.sax.ext.DeclHandler | getDeclHandler()Returns the DTD declaration event handler.
return fDeclHandler;
|
public com.sun.org.apache.xerces.internal.xs.ElementPSVI | getElementPSVI()
return (fAugmentations != null)?(ElementPSVI)fAugmentations.getItem(Constants.ELEMENT_PSVI):null;
|
public org.xml.sax.EntityResolver | getEntityResolver()Return the current entity resolver.
EntityResolver entityResolver = null;
try {
XMLEntityResolver xmlEntityResolver =
(XMLEntityResolver)fConfiguration.getProperty(ENTITY_RESOLVER);
if (xmlEntityResolver != null){
if( xmlEntityResolver instanceof EntityResolverWrapper) {
entityResolver = ((EntityResolverWrapper)xmlEntityResolver).getEntityResolver();
}else if(xmlEntityResolver instanceof EntityResolver2Wrapper){
entityResolver = ((EntityResolver2Wrapper)xmlEntityResolver).getEntityResolver();
}
}
}catch (XMLConfigurationException e) {
// do nothing
}
return entityResolver;
|
public org.xml.sax.ErrorHandler | getErrorHandler()Return the current error handler.
ErrorHandler errorHandler = null;
try {
XMLErrorHandler xmlErrorHandler =
(XMLErrorHandler)fConfiguration.getProperty(ERROR_HANDLER);
if (xmlErrorHandler != null &&
xmlErrorHandler instanceof ErrorHandlerWrapper) {
errorHandler = ((ErrorHandlerWrapper)xmlErrorHandler).getErrorHandler();
}
}
catch (XMLConfigurationException e) {
// do nothing
}
return errorHandler;
|
public boolean | getFeature(java.lang.String featureId)Query the state of a feature.
Query the current state of any feature in a SAX2 parser. The
parser might not recognize the feature.
try {
//
// SAX2 Features
//
if (featureId.startsWith(Constants.SAX_FEATURE_PREFIX)) {
final int suffixLength = featureId.length() - Constants.SAX_FEATURE_PREFIX.length();
// http://xml.org/sax/features/namespace-prefixes
// controls the reporting of raw prefixed names and Namespace
// declarations (xmlns* attributes): when this feature is false
// (the default), raw prefixed names may optionally be reported,
// and xmlns* attributes must not be reported.
//
if (suffixLength == Constants.NAMESPACE_PREFIXES_FEATURE.length() &&
featureId.endsWith(Constants.NAMESPACE_PREFIXES_FEATURE)) {
boolean state = fConfiguration.getFeature(featureId);
return state;
}
// http://xml.org/sax/features/string-interning
// controls the use of java.lang.String#intern() for strings
// passed to SAX handlers.
//
if (suffixLength == Constants.STRING_INTERNING_FEATURE.length() &&
featureId.endsWith(Constants.STRING_INTERNING_FEATURE)) {
return true;
}
// http://xml.org/sax/features/lexical-handler/parameter-entities
// controls whether the beginning and end of parameter entities
// will be reported to the LexicalHandler.
//
if (suffixLength == Constants.LEXICAL_HANDLER_PARAMETER_ENTITIES_FEATURE.length() &&
featureId.endsWith(Constants.LEXICAL_HANDLER_PARAMETER_ENTITIES_FEATURE)) {
return fLexicalHandlerParameterEntities;
}
if(suffixLength == Constants.USE_ENTITY_RESOLVER2_FEATURE.length() &&
featureId.endsWith(Constants.USE_ENTITY_RESOLVER2_FEATURE)){
return resolverType;
}
if(suffixLength == Constants.USE_LOCATOR2_FEATURE.length() && featureId.endsWith(Constants.USE_LOCATOR2_FEATURE)){
return locatorType;
}
if(suffixLength == Constants.USE_ATTRIBUTES2_FEATURE.length() && featureId.endsWith(Constants.USE_ATTRIBUTES2_FEATURE)){
return attributeType;
}
if(suffixLength == Constants.IS_STANDALONE_FEATURE.length() && featureId.endsWith(Constants.IS_STANDALONE_FEATURE)){
return isStandalone;
}
//
// Drop through and perform default processing
//
}
//
// Xerces Features
//
/*
else if (featureId.startsWith(XERCES_FEATURES_PREFIX)) {
//
// Drop through and perform default processing
//
}
*/
return fConfiguration.getFeature(featureId);
}
catch (XMLConfigurationException e) {
String identifier = e.getIdentifier();
if (e.getType() == XMLConfigurationException.NOT_RECOGNIZED) {
throw new SAXNotRecognizedException(
SAXMessageFormatter.formatMessage(fConfiguration.getLocale(),
"feature-not-recognized", new Object [] {identifier}));
}
else {
throw new SAXNotSupportedException(
SAXMessageFormatter.formatMessage(fConfiguration.getLocale(),
"feature-not-supported", new Object [] {identifier}));
}
}
|
protected org.xml.sax.ext.LexicalHandler | getLexicalHandler()Returns the lexical handler.
return fLexicalHandler;
|
public java.lang.Object | getProperty(java.lang.String propertyId)Query the value of a property.
Return the current value of a property in a SAX2 parser.
The parser might not recognize the property.
try {
//
// SAX2 core properties
//
if (propertyId.startsWith(Constants.SAX_PROPERTY_PREFIX)) {
final int suffixLength = propertyId.length() - Constants.SAX_PROPERTY_PREFIX.length();
//
// http://xml.org/sax/properties/lexical-handler
// Value type: org.xml.sax.ext.LexicalHandler
// Access: read/write, pre-parse only
// Set the lexical event handler.
//
if (suffixLength == Constants.LEXICAL_HANDLER_PROPERTY.length() &&
propertyId.endsWith(Constants.LEXICAL_HANDLER_PROPERTY)) {
return getLexicalHandler();
}
//
// http://xml.org/sax/properties/declaration-handler
// Value type: org.xml.sax.ext.DeclHandler
// Access: read/write, pre-parse only
// Set the DTD declaration event handler.
//
if (suffixLength == Constants.DECLARATION_HANDLER_PROPERTY.length() &&
propertyId.endsWith(Constants.DECLARATION_HANDLER_PROPERTY)) {
return getDeclHandler();
}
//
// http://xml.org/sax/properties/dom-node
// Value type: DOM Node
// Access: read-only
// Get the DOM node currently being visited, if the SAX parser is
// iterating over a DOM tree. If the parser recognises and
// supports this property but is not currently visiting a DOM
// node, it should return null (this is a good way to check for
// availability before the parse begins).
//
if (suffixLength == Constants.DOM_NODE_PROPERTY.length() &&
propertyId.endsWith(Constants.DOM_NODE_PROPERTY)) {
// we are not iterating a DOM tree
throw new SAXNotSupportedException(
SAXMessageFormatter.formatMessage(fConfiguration.getLocale(),
"dom-node-read-not-supported", null));
}
if(suffixLength == Constants.DOCUMENT_XML_VERSION_PROPERTY.length() &&
propertyId.endsWith(Constants.DOCUMENT_XML_VERSION_PROPERTY)){
if(startDocumentCalled){
return fVersion;
}else{
throw new SAXNotSupportedException(
SAXMessageFormatter.formatMessage(fConfiguration.getLocale(),
"start-document-not-called", new Object [] {propertyId}));
}
}
//
// Drop through and perform default processing
//
}
//
// Xerces properties
//
/*
else if (propertyId.startsWith(XERCES_PROPERTIES_PREFIX)) {
//
// Drop through and perform default processing
//
}
*/
//
// Perform default processing
//
return fConfiguration.getProperty(propertyId);
}
catch (XMLConfigurationException e) {
String identifier = e.getIdentifier();
if (e.getType() == XMLConfigurationException.NOT_RECOGNIZED) {
throw new SAXNotRecognizedException(
SAXMessageFormatter.formatMessage(fConfiguration.getLocale(),
"property-not-recognized", new Object [] {identifier}));
}
else {
throw new SAXNotSupportedException(
SAXMessageFormatter.formatMessage(fConfiguration.getLocale(),
"property-not-supported", new Object [] {identifier}));
}
}
|
public void | ignorableWhitespace(com.sun.org.apache.xerces.internal.xni.XMLString text, com.sun.org.apache.xerces.internal.xni.Augmentations augs)Ignorable whitespace. For this method to be called, the document
source must have some way of determining that the text containing
only whitespace characters should be considered ignorable. For
example, the validator can determine if a length of whitespace
characters in the document are ignorable based on the element
content model.
try {
// SAX1
if (fDocumentHandler != null) {
fDocumentHandler.ignorableWhitespace(text.ch, text.offset, text.length);
}
// SAX2
if (fContentHandler != null) {
fContentHandler.ignorableWhitespace(text.ch, text.offset, text.length);
}
}
catch (SAXException e) {
throw new XNIException(e);
}
|
public void | internalEntityDecl(java.lang.String name, com.sun.org.apache.xerces.internal.xni.XMLString text, com.sun.org.apache.xerces.internal.xni.XMLString nonNormalizedText, com.sun.org.apache.xerces.internal.xni.Augmentations augs)An internal entity declaration.
try {
// SAX2 extensions
if (fDeclHandler != null) {
fDeclHandler.internalEntityDecl(name, text.toString());
}
}
catch (SAXException e) {
throw new XNIException(e);
}
|
public void | notationDecl(java.lang.String name, com.sun.org.apache.xerces.internal.xni.XMLResourceIdentifier identifier, com.sun.org.apache.xerces.internal.xni.Augmentations augs)A notation declaration
String publicId = identifier.getPublicId();
String expandedSystemId = identifier.getExpandedSystemId();
String literalSystemId = identifier.getLiteralSystemId();
try {
// SAX1 and SAX2
if (fDTDHandler != null) {
fDTDHandler.notationDecl(name, publicId, ((resolve_dtd_uris) ? expandedSystemId : literalSystemId));
}
}
catch (SAXException e) {
throw new XNIException(e);
}
|
public void | parse(java.lang.String systemId)Parses the input source specified by the given system identifier.
This method is equivalent to the following:
parse(new InputSource(systemId));
// parse document
XMLInputSource source = new XMLInputSource(null, systemId, null);
try {
parse(source);
}
// wrap XNI exceptions as SAX exceptions
catch (XMLParseException e) {
Exception ex = e.getException();
if (ex == null) {
// must be a parser exception; mine it for locator info and throw
// a SAXParseException
locatorType = true;
LocatorImpl locatorImpl = new LocatorImpl(){
public String getXMLVersion() {
return fVersion;
}
// since XMLParseExceptions know nothing about encoding,
// we cannot return anything meaningful in this context.
// We *could* consult the LocatorProxy, but the
// application can do this itself if it wishes to possibly
// be mislead.
public String getEncoding() {
return null;
}
};
locatorImpl.setPublicId(e.getPublicId());
locatorImpl.setSystemId(e.getExpandedSystemId());
locatorImpl.setLineNumber(e.getLineNumber());
locatorImpl.setColumnNumber(e.getColumnNumber());
throw new SAXParseException(e.getMessage(), locatorImpl);
}
if (ex instanceof SAXException) {
// why did we create an XMLParseException?
throw (SAXException)ex;
}
if (ex instanceof IOException) {
throw (IOException)ex;
}
throw new SAXException(ex);
}
catch (XNIException e) {
Exception ex = e.getException();
if (ex == null) {
throw new SAXException(e.getMessage());
}
if (ex instanceof SAXException) {
throw (SAXException)ex;
}
if (ex instanceof IOException) {
throw (IOException)ex;
}
throw new SAXException(ex);
}
|
public void | parse(org.xml.sax.InputSource inputSource)parse
// parse document
try {
XMLInputSource xmlInputSource =
new XMLInputSource(inputSource.getPublicId(),
inputSource.getSystemId(),
null);
xmlInputSource.setByteStream(inputSource.getByteStream());
xmlInputSource.setCharacterStream(inputSource.getCharacterStream());
xmlInputSource.setEncoding(inputSource.getEncoding());
parse(xmlInputSource);
}
// wrap XNI exceptions as SAX exceptions
catch (XMLParseException e) {
Exception ex = e.getException();
if (ex == null) {
// must be a parser exception; mine it for locator info and throw
// a SAXParseException
locatorType = true;
LocatorImpl locatorImpl = new LocatorImpl() {
public String getXMLVersion() {
return fVersion;
}
// since XMLParseExceptions know nothing about encoding,
// we cannot return anything meaningful in this context.
// We *could* consult the LocatorProxy, but the
// application can do this itself if it wishes to possibly
// be mislead.
public String getEncoding() {
return null;
}
};
locatorImpl.setPublicId(e.getPublicId());
locatorImpl.setSystemId(e.getExpandedSystemId());
locatorImpl.setLineNumber(e.getLineNumber());
locatorImpl.setColumnNumber(e.getColumnNumber());
throw new SAXParseException(e.getMessage(), locatorImpl);
}
if (ex instanceof SAXException) {
// why did we create an XMLParseException?
throw (SAXException)ex;
}
if (ex instanceof IOException) {
throw (IOException)ex;
}
throw new SAXException(ex);
}
catch (XNIException e) {
Exception ex = e.getException();
if (ex == null) {
throw new SAXException(e.getMessage());
}
if (ex instanceof SAXException) {
throw (SAXException)ex;
}
if (ex instanceof IOException) {
throw (IOException)ex;
}
throw new SAXException(ex);
}
|
public void | processingInstruction(java.lang.String target, com.sun.org.apache.xerces.internal.xni.XMLString data, com.sun.org.apache.xerces.internal.xni.Augmentations augs)A processing instruction. Processing instructions consist of a
target name and, optionally, text data. The data is only meaningful
to the application.
Typically, a processing instruction's data will contain a series
of pseudo-attributes. These pseudo-attributes follow the form of
element attributes but are not parsed or presented
to the application as anything other than text. The application is
responsible for parsing the data.
//
// REVISIT - I keep running into SAX apps that expect
// null data to be an empty string, which is contrary
// to the comment for this method in the SAX API.
//
try {
// SAX1
if (fDocumentHandler != null) {
fDocumentHandler.processingInstruction(target,
data.toString());
}
// SAX2
if (fContentHandler != null) {
fContentHandler.processingInstruction(target, data.toString());
}
}
catch (SAXException e) {
throw new XNIException(e);
}
|
public void | reset()Reset all components before parsing.
super.reset();
// reset state
fInDTD = false;
fVersion = "1.0";
// features
fNamespaces = fConfiguration.getFeature(NAMESPACES);
fNamespacePrefixes = fConfiguration.getFeature(NAMESPACE_PREFIXES);
fAugmentations = null;
fDeclaredAttrs = null;
|
public void | setContentHandler(org.xml.sax.ContentHandler contentHandler)Allow an application to register a content event handler.
If the application does not register a content handler, all
content events reported by the SAX parser will be silently
ignored.
Applications may register a new or different handler in the
middle of a parse, and the SAX parser must begin using the new
handler immediately.
fContentHandler = contentHandler;
|
public void | setDTDHandler(org.xml.sax.DTDHandler dtdHandler)Allow an application to register a DTD event handler.
If the application does not register a DTD handler, all DTD
events reported by the SAX parser will be silently ignored.
Applications may register a new or different handler in the
middle of a parse, and the SAX parser must begin using the new
handler immediately.
fDTDHandler = dtdHandler;
|
protected void | setDeclHandler(org.xml.sax.ext.DeclHandler handler)Set the DTD declaration event handler.
This method is the equivalent to the property:
http://xml.org/sax/properties/declaration-handler
if (fParseInProgress) {
throw new SAXNotSupportedException(
SAXMessageFormatter.formatMessage(fConfiguration.getLocale(),
"property-not-parsing-supported",
new Object [] {"http://xml.org/sax/properties/declaration-handler"}));
}
fDeclHandler = handler;
|
public void | setDocumentHandler(org.xml.sax.DocumentHandler documentHandler)Allow an application to register a document event handler.
If the application does not register a document handler, all
document events reported by the SAX parser will be silently
ignored (this is the default behaviour implemented by
HandlerBase).
Applications may register a new or different handler in the
middle of a parse, and the SAX parser must begin using the new
handler immediately.
fDocumentHandler = documentHandler;
|
public void | setEntityResolver(org.xml.sax.EntityResolver resolver)Sets the resolver used to resolve external entities. The EntityResolver
interface supports resolution of public and system identifiers.
try {
if(resolver instanceof EntityResolver2){
resolverType = true;
fConfiguration.setProperty(ENTITY_RESOLVER, new EntityResolver2Wrapper((EntityResolver2)resolver));
}else
fConfiguration.setProperty(ENTITY_RESOLVER, new EntityResolverWrapper(resolver));
}
catch (XMLConfigurationException e) {
// do nothing
}
|
public void | setErrorHandler(org.xml.sax.ErrorHandler errorHandler)Allow an application to register an error event handler.
If the application does not register an error handler, all
error events reported by the SAX parser will be silently
ignored; however, normal processing may not continue. It is
highly recommended that all SAX applications implement an
error handler to avoid unexpected bugs.
Applications may register a new or different handler in the
middle of a parse, and the SAX parser must begin using the new
handler immediately.
try {
fConfiguration.setProperty(ERROR_HANDLER,
new ErrorHandlerWrapper(errorHandler));
}
catch (XMLConfigurationException e) {
// do nothing
}
|
public void | setFeature(java.lang.String featureId, boolean state)Set the state of any feature in a SAX2 parser. The parser
might not recognize the feature, and if it does recognize
it, it might not be able to fulfill the request.
try {
//
// SAX2 Features
//
if (featureId.startsWith(Constants.SAX_FEATURE_PREFIX)) {
final int suffixLength = featureId.length() - Constants.SAX_FEATURE_PREFIX.length();
// http://xml.org/sax/features/namespaces
if (suffixLength == Constants.NAMESPACES_FEATURE.length() &&
featureId.endsWith(Constants.NAMESPACES_FEATURE)) {
fConfiguration.setFeature(featureId, state);
fNamespaces = state;
return;
}
// http://xml.org/sax/features/namespace-prefixes
// controls the reporting of raw prefixed names and Namespace
// declarations (xmlns* attributes): when this feature is false
// (the default), raw prefixed names may optionally be reported,
// and xmlns* attributes must not be reported.
//
if (suffixLength == Constants.NAMESPACE_PREFIXES_FEATURE.length() &&
featureId.endsWith(Constants.NAMESPACE_PREFIXES_FEATURE)) {
fConfiguration.setFeature(featureId, state);
fNamespacePrefixes = state;
return;
}
// http://xml.org/sax/features/string-interning
// controls the use of java.lang.String#intern() for strings
// passed to SAX handlers.
//
if (suffixLength == Constants.STRING_INTERNING_FEATURE.length() &&
featureId.endsWith(Constants.STRING_INTERNING_FEATURE)) {
if (!state) {
throw new SAXNotSupportedException(
SAXMessageFormatter.formatMessage(fConfiguration.getLocale(),
"false-not-supported", new Object [] {featureId}));
}
return;
}
// http://xml.org/sax/features/lexical-handler/parameter-entities
// controls whether the beginning and end of parameter entities
// will be reported to the LexicalHandler.
//
if (suffixLength == Constants.LEXICAL_HANDLER_PARAMETER_ENTITIES_FEATURE.length() &&
featureId.endsWith(Constants.LEXICAL_HANDLER_PARAMETER_ENTITIES_FEATURE)) {
fLexicalHandlerParameterEntities = state;
return;
}
if(suffixLength == Constants.RESOLVE_DTD_URIS_FEATURE.length() && featureId.endsWith(Constants.RESOLVE_DTD_URIS_FEATURE)){
resolve_dtd_uris = state;
fConfiguration.setFeature(featureId, state);
return;
}
if((suffixLength == Constants.XML_11_FEATURE.length() &&
featureId.endsWith(Constants.XML_11_FEATURE)) ||
(suffixLength == Constants.USE_ENTITY_RESOLVER2_FEATURE.length() &&
featureId.endsWith(Constants.USE_ENTITY_RESOLVER2_FEATURE))||
(suffixLength == Constants.USE_LOCATOR2_FEATURE.length() &&
featureId.endsWith(Constants.USE_LOCATOR2_FEATURE))||
(suffixLength == Constants.USE_ATTRIBUTES2_FEATURE.length() &&
featureId.endsWith(Constants.USE_ATTRIBUTES2_FEATURE))||
(suffixLength == Constants.IS_STANDALONE_FEATURE.length() &&
featureId.endsWith(Constants.IS_STANDALONE_FEATURE))
){
throw new SAXNotSupportedException(
SAXMessageFormatter.formatMessage(fConfiguration.getLocale(),
"feature-read-only", new Object [] {featureId}));
}
//
// Drop through and perform default processing
//
}
//
// Xerces Features
//
/*
else if (featureId.startsWith(XERCES_FEATURES_PREFIX)) {
String feature = featureId.substring(XERCES_FEATURES_PREFIX.length());
//
// Drop through and perform default processing
//
}
*/
//
// Default handling
//
fConfiguration.setFeature(featureId, state);
}
catch (XMLConfigurationException e) {
String identifier = e.getIdentifier();
if (e.getType() == XMLConfigurationException.NOT_RECOGNIZED) {
throw new SAXNotRecognizedException(
SAXMessageFormatter.formatMessage(fConfiguration.getLocale(),
"feature-not-recognized", new Object [] {identifier}));
}
else {
throw new SAXNotSupportedException(
SAXMessageFormatter.formatMessage(fConfiguration.getLocale(),
"feature-not-supported", new Object [] {identifier}));
}
}
|
protected void | setLexicalHandler(org.xml.sax.ext.LexicalHandler handler)Set the lexical event handler.
This method is the equivalent to the property:
http://xml.org/sax/properties/lexical-handler
if (fParseInProgress) {
throw new SAXNotSupportedException(
SAXMessageFormatter.formatMessage(fConfiguration.getLocale(),
"property-not-parsing-supported",
new Object [] {"http://xml.org/sax/properties/lexical-handler"}));
}
fLexicalHandler = handler;
|
public void | setLocale(java.util.Locale locale)Set the locale to use for messages.
//REVISIT:this methods is not part of SAX2 interfaces, we should throw exception
//if any application uses SAX2 and sets locale also. -nb
fConfiguration.setLocale(locale);
|
public void | setProperty(java.lang.String propertyId, java.lang.Object value)Set the value of any property in a SAX2 parser. The parser
might not recognize the property, and if it does recognize
it, it might not support the requested value.
try {
//
// SAX2 core properties
//
if (propertyId.startsWith(Constants.SAX_PROPERTY_PREFIX)) {
final int suffixLength = propertyId.length() - Constants.SAX_PROPERTY_PREFIX.length();
//
// http://xml.org/sax/properties/lexical-handler
// Value type: org.xml.sax.ext.LexicalHandler
// Access: read/write, pre-parse only
// Set the lexical event handler.
//
if (suffixLength == Constants.LEXICAL_HANDLER_PROPERTY.length() &&
propertyId.endsWith(Constants.LEXICAL_HANDLER_PROPERTY)) {
try {
setLexicalHandler((LexicalHandler)value);
}
catch (ClassCastException e) {
throw new SAXNotSupportedException(
SAXMessageFormatter.formatMessage(fConfiguration.getLocale(),
"incompatible-class", new Object [] {propertyId, "org.xml.sax.ext.LexicalHandler"}));
}
return;
}
//
// http://xml.org/sax/properties/declaration-handler
// Value type: org.xml.sax.ext.DeclHandler
// Access: read/write, pre-parse only
// Set the DTD declaration event handler.
//
if (suffixLength == Constants.DECLARATION_HANDLER_PROPERTY.length() &&
propertyId.endsWith(Constants.DECLARATION_HANDLER_PROPERTY)) {
try {
setDeclHandler((DeclHandler)value);
}
catch (ClassCastException e) {
throw new SAXNotSupportedException(
SAXMessageFormatter.formatMessage(fConfiguration.getLocale(),
"incompatible-class", new Object [] {propertyId, "org.xml.sax.ext.DeclHandler"}));
}
return;
}
//
// http://xml.org/sax/properties/dom-node
// Value type: DOM Node
// Access: read-only
// Get the DOM node currently being visited, if the SAX parser is
// iterating over a DOM tree. If the parser recognises and
// supports this property but is not currently visiting a DOM
// node, it should return null (this is a good way to check for
// availability before the parse begins).
//
if (suffixLength == Constants.DOM_NODE_PROPERTY.length() &&
propertyId.endsWith(Constants.DOM_NODE_PROPERTY)) {
throw new SAXNotSupportedException(
SAXMessageFormatter.formatMessage(fConfiguration.getLocale(),
"property-read-only", new Object [] {propertyId}));
}
if(suffixLength == Constants.DOCUMENT_XML_VERSION_PROPERTY.length() && propertyId.endsWith(Constants.DOCUMENT_XML_VERSION_PROPERTY)){
throw new SAXNotSupportedException(
SAXMessageFormatter.formatMessage(fConfiguration.getLocale(),
"property-read-only", new Object [] {propertyId}));
}
//
// Drop through and perform default processing
//
}
//
// Xerces Properties
//
/*
else if (propertyId.startsWith(XERCES_PROPERTIES_PREFIX)) {
//
// Drop through and perform default processing
//
}
*/
//
// Perform default processing
//
fConfiguration.setProperty(propertyId, value);
}
catch (XMLConfigurationException e) {
String identifier = e.getIdentifier();
if (e.getType() == XMLConfigurationException.NOT_RECOGNIZED) {
throw new SAXNotRecognizedException(
SAXMessageFormatter.formatMessage(fConfiguration.getLocale(),
"property-not-recognized", new Object [] {identifier}));
}
else {
throw new SAXNotSupportedException(
SAXMessageFormatter.formatMessage(fConfiguration.getLocale(),
"property-not-supported", new Object [] {identifier}));
}
}
|
public void | startCDATA(com.sun.org.apache.xerces.internal.xni.Augmentations augs)The start of a CDATA section.
try {
// SAX2 extension
if (fLexicalHandler != null) {
fLexicalHandler.startCDATA();
}
}
catch (SAXException e) {
throw new XNIException(e);
}
|
public void | startDocument(com.sun.org.apache.xerces.internal.xni.XMLLocator locator, java.lang.String encoding, com.sun.org.apache.xerces.internal.xni.NamespaceContext namespaceContext, com.sun.org.apache.xerces.internal.xni.Augmentations augs)The start of the document.
fNamespaceContext = namespaceContext;
startDocumentCalled = true;
try {
// SAX1
if (fDocumentHandler != null) {
if (locator != null) {
fDocumentHandler.setDocumentLocator(new LocatorProxy(locator));
}
fDocumentHandler.startDocument();
}
// SAX2
if (fContentHandler != null) {
if (locator != null) {
locatorType = true;
fContentHandler.setDocumentLocator(new LocatorProxy(locator));
}
fContentHandler.startDocument();
}
}
catch (SAXException e) {
throw new XNIException(e);
}
|
public void | startElement(com.sun.org.apache.xerces.internal.xni.QName element, com.sun.org.apache.xerces.internal.xni.XMLAttributes attributes, com.sun.org.apache.xerces.internal.xni.Augmentations augs)The start of an element. If the document specifies the start element
by using an empty tag, then the startElement method will immediately
be followed by the endElement method, with no intervening methods.
try {
// SAX1
if (fDocumentHandler != null) {
// REVISIT: should we support schema-normalized-value for SAX1 events
//
fAttributesProxy.setAttributes(attributes);
fDocumentHandler.startElement(element.rawname, fAttributesProxy);
}
// SAX2
if (fContentHandler != null) {
if (fNamespaces) {
// send prefix mapping events
startNamespaceMapping();
// REVISIT: It should not be necessary to iterate over the attribute
// list when the set of [namespace attributes] is empty for this
// element. This should be computable from the NamespaceContext, but
// since we currently don't report the mappings for the xml prefix
// we cannot use the declared prefix count for the current context
// to skip this section. -- mrglavas
int len = attributes.getLength();
for (int i = len - 1; i >= 0; --i) {
attributes.getName(i, fQName);
if ((fQName.prefix == XMLSymbols.PREFIX_XMLNS) ||
(fQName.rawname == XMLSymbols.PREFIX_XMLNS)) {
if (!fNamespacePrefixes) {
// remove namespace declaration attributes
attributes.removeAttributeAt(i);
}
else {
// localpart should be empty string as per SAX documentation:
// http://www.saxproject.org/?selected=namespaces
fQName.prefix = "";
fQName.uri = "";
fQName.localpart = "";
attributes.setName(i, fQName);
}
}
}
}
fAugmentations = augs;
String uri = element.uri != null ? element.uri : "";
String localpart = fNamespaces ? element.localpart : "";
fAttributesProxy.setAttributes(attributes);
fContentHandler.startElement(uri, localpart, element.rawname,
fAttributesProxy);
}
}
catch (SAXException e) {
throw new XNIException(e);
}
|
public void | startExternalSubset(com.sun.org.apache.xerces.internal.xni.XMLResourceIdentifier identifier, com.sun.org.apache.xerces.internal.xni.Augmentations augs)The start of the DTD external subset.
startParameterEntity("[dtd]", null, null, augs);
|
public void | startGeneralEntity(java.lang.String name, com.sun.org.apache.xerces.internal.xni.XMLResourceIdentifier identifier, java.lang.String encoding, com.sun.org.apache.xerces.internal.xni.Augmentations augs)This method notifies of the start of an entity. The DTD has the
pseudo-name of "[dtd]" parameter entity names start with '%'; and
general entity names are just the entity name.
Note: Since the document is an entity, the handler
will be notified of the start of the document entity by calling the
startEntity method with the entity name "[xml]" before calling
the startDocument method. When exposing entity boundaries through the
SAX API, the document entity is never reported, however.
Note: This method is not called for entity references
appearing as part of attribute values.
try {
// Only report startEntity if this entity was actually read.
if (augs != null && Boolean.TRUE.equals(augs.getItem(Constants.ENTITY_SKIPPED))) {
// report skipped entity to content handler
if (fContentHandler != null) {
fContentHandler.skippedEntity(name);
}
}
else {
// SAX2 extension
if (fLexicalHandler != null) {
fLexicalHandler.startEntity(name);
}
}
}
catch (SAXException e) {
throw new XNIException(e);
}
|
protected final void | startNamespaceMapping()Send startPrefixMapping events
int count = fNamespaceContext.getDeclaredPrefixCount();
if (count > 0) {
String prefix = null;
String uri = null;
for (int i = 0; i < count; i++) {
prefix = fNamespaceContext.getDeclaredPrefixAt(i);
uri = fNamespaceContext.getURI(prefix);
fContentHandler.startPrefixMapping(prefix,
(uri == null) ? "" : uri);
}
}
|
public void | startParameterEntity(java.lang.String name, com.sun.org.apache.xerces.internal.xni.XMLResourceIdentifier identifier, java.lang.String encoding, com.sun.org.apache.xerces.internal.xni.Augmentations augs)This method notifies of the start of parameter entity. The DTD has the
pseudo-name of "[dtd]" parameter entity names start with '%'; and
general entity names are just the entity name.
Note: Since the document is an entity, the handler
will be notified of the start of the document entity by calling the
startEntity method with the entity name "[xml]" before calling
the startDocument method. When exposing entity boundaries through the
SAX API, the document entity is never reported, however.
Note: This method is not called for entity references
appearing as part of attribute values.
try {
// Only report startEntity if this entity was actually read.
if (augs != null && Boolean.TRUE.equals(augs.getItem(Constants.ENTITY_SKIPPED))) {
// report skipped entity to content handler
if (fContentHandler != null) {
fContentHandler.skippedEntity(name);
}
}
else {
// SAX2 extension
if (fLexicalHandler != null && fLexicalHandlerParameterEntities) {
fLexicalHandler.startEntity(name);
}
}
}
catch (SAXException e) {
throw new XNIException(e);
}
|
public void | unparsedEntityDecl(java.lang.String name, com.sun.org.apache.xerces.internal.xni.XMLResourceIdentifier identifier, java.lang.String notation, com.sun.org.apache.xerces.internal.xni.Augmentations augs)An unparsed entity declaration.
String publicId = identifier.getPublicId();
String expandedSystemId = identifier.getExpandedSystemId();
String literalSystemId = identifier.getLiteralSystemId();
try {
// SAX2 extension
if (fDTDHandler != null) {
fDTDHandler.unparsedEntityDecl(name, publicId,
((resolve_dtd_uris) ? expandedSystemId : literalSystemId), notation);
}
}
catch (SAXException e) {
throw new XNIException(e);
}
|
public void | xmlDecl(java.lang.String version, java.lang.String encoding, java.lang.String standalone, com.sun.org.apache.xerces.internal.xni.Augmentations augs)Notifies of the presence of an XMLDecl line in the document. If
present, this method will be called immediately following the
startDocument call.
// the version need only be set once; if
// document's XML 1.0|1.1, that's how it'll stay
fVersion = version;
if(standalone != null && standalone.equalsIgnoreCase("yes"))
isStandalone = true;
else
isStandalone = false;
|