Top Description Fields Constructors Methods
org.apache.xerces.impl

public Class XMLEntityScanner

extends Object
implements XMLLocator
Class Inheritance
All Implemented Interfaces
org.apache.xerces.xni.XMLLocator
Known Direct Subclasses
org.apache.xerces.impl.XML11EntityScanner
Imports
java.io.EOFException, .IOException, java.util.Locale, org.apache.xerces.impl.io.UCSReader, org.apache.xerces.impl.msg.XMLMessageFormatter, org.apache.xerces.util.SymbolTable, .XMLChar, .XMLStringBuffer, org.apache.xerces.xni.QName, .XMLLocator, .XMLString

Implements the entity scanner methods.
Authors
Andy Clark, IBM, Neil Graham, IBM
Version
$Id: XMLEntityScanner.java 1897159 2022-01-17 20:48:22Z mrglavas $

Field Summary

Modifier and TypeField and Description
private static final boolean
private static final boolean
private static final EOFException
END_OF_DOCUMENT_ENTITY

To signal the end of the document entity, this exception will be thrown.

protected int
protected XMLEntityManager.ScannedEntity
private XMLEntityManager
protected XMLErrorReporter
fErrorReporter

Error reporter.

protected SymbolTable

Constructor Summary

AccessConstructor and Description
public
XMLEntityScanner()

Default constructor.

Method Summary

Modifier and TypeMethod and Description
public final String
getBaseSystemId()

Implements org.apache.xerces.xni.XMLLocator.getBaseSystemId.

Returns the base system identifier of the currently scanned entity, or null if none is available.
public final int

Returns:

The character offset, or -1 if none is available.
getCharacterOffset
()

Implements org.apache.xerces.xni.XMLLocator.getCharacterOffset.

Returns the character offset where the current document event ends.
public final int

Returns:

The column number, or -1 if none is available.
getColumnNumber
()

Implements org.apache.xerces.xni.XMLLocator.getColumnNumber.

Returns the column number where the current document event ends.
public final String
getEncoding()

Implements org.apache.xerces.xni.XMLLocator.getEncoding.

Returns the encoding of the current entity.
public final String

Returns:

A string containing the expanded system identifier, or null if none is available.
getExpandedSystemId
()

Implements org.apache.xerces.xni.XMLLocator.getExpandedSystemId.

Return the expanded system identifier for the current document event.
public final int

Returns:

The line number, or -1 if none is available.
getLineNumber
()

Implements org.apache.xerces.xni.XMLLocator.getLineNumber.

Returns the line number where the current document event ends.
public final String

Returns:

A string containing the literal system identifier, or null if none is available.
getLiteralSystemId
()

Implements org.apache.xerces.xni.XMLLocator.getLiteralSystemId.

Return the literal system identifier for the current document event.
public final String

Returns:

A string containing the public identifier, or null if none is available.
getPublicId
()

Implements org.apache.xerces.xni.XMLLocator.getPublicId.

Return the public identifier for the current document event.
public final String
getXMLVersion()

Implements org.apache.xerces.xni.XMLLocator.getXMLVersion.

Returns the XML version of the current entity.
public final boolean
isExternal()

Returns true if the current entity being scanned is external.

pack-priv final boolean

Returns:

Returns true if the entity changed as a result of this load operation.
load
(int
The offset into the character buffer to read the next batch of characters.
offset
,
boolean
True if the load should change entities at the end of the entity, otherwise leave the current entity in place and the entity boundary will be signaled by the return value.
changeEntity
)

Loads a chunk of text.

public int
peekChar()

Returns the next character on the input.

public final void
reset(SymbolTable symbolTable, XMLEntityManager entityManager, XMLErrorReporter reporter)

pack-priv final void
resizeBuffer(int offset, int length)

This method is invoked to increase the size of the current entity's buffer if an XML name being scanned is too large to fit within the buffer at its current size.

public int
scanChar()

Returns the next character on the input.

public int

Returns:

Returns the next character on the input, if known. This value may be -1 but this does note designate end of file.
scanContent
(XMLString
The content structure to fill.
content
)

Scans a range of parsed character data, setting the fields of the XMLString structure, appropriately.

public boolean

Returns:

Returns true if there is more data to scan, false otherwise.
scanData
(String
The string that signifies the end of the character data to be scanned.
delimiter
,
XMLStringBuffer
The XMLStringBuffer to fill.
buffer
)

Scans a range of character data up to the specified delimiter, setting the fields of the XMLString structure, appropriately.

public int

Returns:

Returns the next character on the input, if known. This value may be -1 but this does note designate end of file.
scanLiteral
(int
The quote character that signifies the end of the attribute value data.
quote
,
XMLString
The content structure to fill.
content
)

Scans a range of attribute value data, setting the fields of the XMLString structure, appropriately.

public String
scanName()

Returns a string matching the Name production appearing immediately on the input as a symbol, or null if no Name string is present.

public String
scanNCName()

Returns a string matching the NCName production appearing immediately on the input as a symbol, or null if no NCName string is present.

public String
scanNmtoken()

Returns a string matching the NMTOKEN production appearing immediately on the input as a symbol, or null if NMTOKEN Name string is present.

public boolean

Returns:

Returns true if a qualified name appeared immediately on the input and was scanned, false otherwise.
scanQName
(QName
The qualified name structure to fill.
qname
)

Scans a qualified name from the input, setting the fields of the QName structure appropriately.

public final void
setBufferSize(int size)

public final void
public final void
setEncoding(String
The IANA encoding name of the new encoding.
encoding
)

Sets the encoding of the scanner.

public final void
setXMLVersion(String
the XML version of the current entity
xmlVersion
)

Sets the XML version.

public boolean

Returns:

Returns true if the character was skipped.
skipChar
(int
The character to skip.
c
)

Skips a character appearing immediately on the input.

public final boolean

Returns:

Returns true if at least one space character was skipped.
skipDeclSpaces
()

Skips space characters appearing immediately on the input that would match non-terminal S (0x09, 0x0A, 0x0D, 0x20) before end of line normalization is performed.

public boolean

Returns:

Returns true if at least one space character was skipped.
skipSpaces
()

Skips space characters appearing immediately on the input.

public boolean

Returns:

Returns true if the string was skipped.
skipString
(String
The string to skip.
s
)

Skips the specified string appearing immediately on the input.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

DEBUG_BUFFERback to summary
private static final boolean DEBUG_BUFFER
DEBUG_ENCODINGSback to summary
private static final boolean DEBUG_ENCODINGS
END_OF_DOCUMENT_ENTITYback to summary
private static final EOFException END_OF_DOCUMENT_ENTITY

To signal the end of the document entity, this exception will be thrown.

fBufferSizeback to summary
protected int fBufferSize
fCurrentEntityback to summary
protected XMLEntityManager.ScannedEntity fCurrentEntity
fEntityManagerback to summary
private XMLEntityManager fEntityManager
fErrorReporterback to summary
protected XMLErrorReporter fErrorReporter

Error reporter. This property identifier is: http://apache.org/xml/properties/internal/error-reporter

fSymbolTableback to summary
protected SymbolTable fSymbolTable

Constructor Detail

XMLEntityScannerback to summary
public XMLEntityScanner()

Default constructor.

Method Detail

getBaseSystemIdback to summary
public final String getBaseSystemId()

Implements org.apache.xerces.xni.XMLLocator.getBaseSystemId.

Returns the base system identifier of the currently scanned entity, or null if none is available.

getCharacterOffsetback to summary
public final int getCharacterOffset()

Implements org.apache.xerces.xni.XMLLocator.getCharacterOffset.

Returns the character offset where the current document event ends.

Warning

The return value from the method is intended only as an approximation for the sake of error reporting; it is not intended to provide sufficient information to edit the character content of the original XML document.

The return value is an approximation of the character offset in the document entity or external parsed entity where the markup triggering the event appears.

If possible, the character offset of the first character after the text associated with the document event should be provided.

Returns:int

The character offset, or -1 if none is available.

getColumnNumberback to summary
public final int getColumnNumber()

Implements org.apache.xerces.xni.XMLLocator.getColumnNumber.

Returns the column number where the current document event ends.

Warning

The return value from the method is intended only as an approximation for the sake of error reporting; it is not intended to provide sufficient information to edit the character content of the original XML document.

The return value is an approximation of the column number in the document entity or external parsed entity where the markup triggering the event appears.

If possible, the line position of the first character after the text associated with the document event should be provided. The first column in each line is column 1.

Returns:int

The column number, or -1 if none is available.

getEncodingback to summary
public final String getEncoding()

Implements org.apache.xerces.xni.XMLLocator.getEncoding.

Returns the encoding of the current entity. Note that, for a given entity, this value can only be considered final once the encoding declaration has been read (or once it has been determined that there is no such declaration) since, no encoding having been specified on the XMLInputSource, the parser will make an initial "guess" which could be in error.

getExpandedSystemIdback to summary
public final String getExpandedSystemId()

Implements org.apache.xerces.xni.XMLLocator.getExpandedSystemId.

Return the expanded system identifier for the current document event.

The return value is the expanded system identifier of the document entity or of the external parsed entity in which the markup triggering the event appears.

If the system identifier is a URL, the parser must resolve it fully before passing it to the application.

Returns:String

A string containing the expanded system identifier, or null if none is available.

getLineNumberback to summary
public final int getLineNumber()

Implements org.apache.xerces.xni.XMLLocator.getLineNumber.

Returns the line number where the current document event ends.

Warning

The return value from the method is intended only as an approximation for the sake of error reporting; it is not intended to provide sufficient information to edit the character content of the original XML document.

The return value is an approximation of the line number in the document entity or external parsed entity where the markup triggering the event appears.

If possible, the line position of the first character after the text associated with the document event should be provided. The first line in the document is line 1.

Returns:int

The line number, or -1 if none is available.

getLiteralSystemIdback to summary
public final String getLiteralSystemId()

Implements org.apache.xerces.xni.XMLLocator.getLiteralSystemId.

Return the literal system identifier for the current document event.

The return value is the literal system identifier of the document entity or of the external parsed entity in which the markup triggering the event appears.

Returns:String

A string containing the literal system identifier, or null if none is available.

getPublicIdback to summary
public final String getPublicId()

Implements org.apache.xerces.xni.XMLLocator.getPublicId.

Return the public identifier for the current document event.

The return value is the public identifier of the document entity or of the external parsed entity in which the markup triggering the event appears.

Returns:String

A string containing the public identifier, or null if none is available.

getXMLVersionback to summary
public final String getXMLVersion()

Implements org.apache.xerces.xni.XMLLocator.getXMLVersion.

Returns the XML version of the current entity. This will normally be the value from the XML or text declaration or defaulted by the parser. Note that that this value may be different than the version of the processing rules applied to the current entity. For instance, an XML 1.1 document may refer to XML 1.0 entities. In such a case the rules of XML 1.1 are applied to the entire document. Also note that, for a given entity, this value can only be considered final once the XML or text declaration has been read or once it has been determined that there is no such declaration.

isExternalback to summary
public final boolean isExternal()

Returns true if the current entity being scanned is external.

loadback to summary
pack-priv final boolean load(int offset, boolean changeEntity) throws IOException

Loads a chunk of text.

Parameters
offset:int

The offset into the character buffer to read the next batch of characters.

changeEntity:boolean

True if the load should change entities at the end of the entity, otherwise leave the current entity in place and the entity boundary will be signaled by the return value.

Returns:boolean

Returns true if the entity changed as a result of this load operation.

peekCharback to summary
public int peekChar() throws IOException

Returns the next character on the input.

Note

The character is not consumed.

Exceptions
IOException:
Thrown if i/o error occurs.
EOFException:
Thrown on end of file.
resetback to summary
public final void reset(SymbolTable symbolTable, XMLEntityManager entityManager, XMLErrorReporter reporter)
resizeBufferback to summary
pack-priv final void resizeBuffer(int offset, int length)

This method is invoked to increase the size of the current entity's buffer if an XML name being scanned is too large to fit within the buffer at its current size.

scanCharback to summary
public int scanChar() throws IOException

Returns the next character on the input.

Note

The character is consumed.

Exceptions
IOException:
Thrown if i/o error occurs.
EOFException:
Thrown on end of file.
scanContentback to summary
public int scanContent(XMLString content) throws IOException

Scans a range of parsed character data, setting the fields of the XMLString structure, appropriately.

Note

The characters are consumed.

Note

This method does not guarantee to return the longest run of parsed character data. This method may return before markup due to reaching the end of the input buffer or any other reason.

Note

The fields contained in the XMLString structure are not guaranteed to remain valid upon subsequent calls to the entity scanner. Therefore, the caller is responsible for immediately using the returned character data or making a copy of the character data.

Parameters
content:XMLString

The content structure to fill.

Returns:int

Returns the next character on the input, if known. This value may be -1 but this does note designate end of file.

Exceptions
IOException:
Thrown if i/o error occurs.
EOFException:
Thrown on end of file.
scanDataback to summary
public boolean scanData(String delimiter, XMLStringBuffer buffer) throws IOException

Scans a range of character data up to the specified delimiter, setting the fields of the XMLString structure, appropriately.

Note

The characters are consumed.

Note

This assumes that the internal buffer is at least the same size, or bigger, than the length of the delimiter and that the delimiter contains at least one character.

Note

This method does not guarantee to return the longest run of character data. This method may return before the delimiter due to reaching the end of the input buffer or any other reason.

Note

The fields contained in the XMLString structure are not guaranteed to remain valid upon subsequent calls to the entity scanner. Therefore, the caller is responsible for immediately using the returned character data or making a copy of the character data.

Parameters
delimiter:String

The string that signifies the end of the character data to be scanned.

buffer:XMLStringBuffer

The XMLStringBuffer to fill.

Returns:boolean

Returns true if there is more data to scan, false otherwise.

Exceptions
IOException:
Thrown if i/o error occurs.
EOFException:
Thrown on end of file.
scanLiteralback to summary
public int scanLiteral(int quote, XMLString content) throws IOException

Scans a range of attribute value data, setting the fields of the XMLString structure, appropriately.

Note

The characters are consumed.

Note

This method does not guarantee to return the longest run of attribute value data. This method may return before the quote character due to reaching the end of the input buffer or any other reason.

Note

The fields contained in the XMLString structure are not guaranteed to remain valid upon subsequent calls to the entity scanner. Therefore, the caller is responsible for immediately using the returned character data or making a copy of the character data.

Parameters
quote:int

The quote character that signifies the end of the attribute value data.

content:XMLString

The content structure to fill.

Returns:int

Returns the next character on the input, if known. This value may be -1 but this does note designate end of file.

Exceptions
IOException:
Thrown if i/o error occurs.
EOFException:
Thrown on end of file.
scanNameback to summary
public String scanName() throws IOException

Returns a string matching the Name production appearing immediately on the input as a symbol, or null if no Name string is present.

Note

The Name characters are consumed.

Note

The string returned must be a symbol. The SymbolTable can be used for this purpose.

Exceptions
IOException:
Thrown if i/o error occurs.
EOFException:
Thrown on end of file.
See Also
org.apache.xerces.util.SymbolTable, org.apache.xerces.util.XMLChar#isName, org.apache.xerces.util.XMLChar#isNameStart
scanNCNameback to summary
public String scanNCName() throws IOException

Returns a string matching the NCName production appearing immediately on the input as a symbol, or null if no NCName string is present.

Note

The NCName characters are consumed.

Note

The string returned must be a symbol. The SymbolTable can be used for this purpose.

Exceptions
IOException:
Thrown if i/o error occurs.
EOFException:
Thrown on end of file.
See Also
org.apache.xerces.util.SymbolTable, org.apache.xerces.util.XMLChar#isNCName, org.apache.xerces.util.XMLChar#isNCNameStart
scanNmtokenback to summary
public String scanNmtoken() throws IOException

Returns a string matching the NMTOKEN production appearing immediately on the input as a symbol, or null if NMTOKEN Name string is present.

Note

The NMTOKEN characters are consumed.

Note

The string returned must be a symbol. The SymbolTable can be used for this purpose.

Exceptions
IOException:
Thrown if i/o error occurs.
EOFException:
Thrown on end of file.
See Also
org.apache.xerces.util.SymbolTable, org.apache.xerces.util.XMLChar#isName
scanQNameback to summary
public boolean scanQName(QName qname) throws IOException

Scans a qualified name from the input, setting the fields of the QName structure appropriately.

Note

The qualified name characters are consumed.

Note

The strings used to set the values of the QName structure must be symbols. The SymbolTable can be used for this purpose.

Parameters
qname:QName

The qualified name structure to fill.

Returns:boolean

Returns true if a qualified name appeared immediately on the input and was scanned, false otherwise.

Exceptions
IOException:
Thrown if i/o error occurs.
EOFException:
Thrown on end of file.
See Also
org.apache.xerces.util.SymbolTable, org.apache.xerces.util.XMLChar#isName, org.apache.xerces.util.XMLChar#isNameStart
setBufferSizeback to summary
public final void setBufferSize(int size)
setCurrentEntityback to summary
public final void setCurrentEntity(XMLEntityManager.ScannedEntity ent)
setEncodingback to summary
public final void setEncoding(String encoding) throws IOException

Sets the encoding of the scanner. This method is used by the scanners if the XMLDecl or TextDecl line contains an encoding pseudo-attribute.

Note

The underlying character reader on the current entity will be changed to accomodate the new encoding. However, the new encoding is ignored if the current reader was not constructed from an input stream (e.g. an external entity that is resolved directly to the appropriate java.io.Reader object).

Parameters
encoding:String

The IANA encoding name of the new encoding.

Exceptions
IOException:
Thrown if the new encoding is not supported.
See Also
org.apache.xerces.util.EncodingMap
setXMLVersionback to summary
public final void setXMLVersion(String xmlVersion)

Sets the XML version. This method is used by the scanners to report the value of the version pseudo-attribute in an XML or text declaration.

Parameters
xmlVersion:String

the XML version of the current entity

skipCharback to summary
public boolean skipChar(int c) throws IOException

Skips a character appearing immediately on the input.

Note

The character is consumed only if it matches the specified character.

Parameters
c:int

The character to skip.

Returns:boolean

Returns true if the character was skipped.

Exceptions
IOException:
Thrown if i/o error occurs.
EOFException:
Thrown on end of file.
skipDeclSpacesback to summary
public final boolean skipDeclSpaces() throws IOException

Skips space characters appearing immediately on the input that would match non-terminal S (0x09, 0x0A, 0x0D, 0x20) before end of line normalization is performed. This is useful when scanning structures such as the XMLDecl and TextDecl that can only contain US-ASCII characters.

Note

The characters are consumed only if they would match non-terminal S before end of line normalization is performed.

Returns:boolean

Returns true if at least one space character was skipped.

Exceptions
IOException:
Thrown if i/o error occurs.
EOFException:
Thrown on end of file.
See Also
org.apache.xerces.util.XMLChar#isSpace
skipSpacesback to summary
public boolean skipSpaces() throws IOException

Skips space characters appearing immediately on the input.

Note

The characters are consumed only if they are space characters.

Returns:boolean

Returns true if at least one space character was skipped.

Exceptions
IOException:
Thrown if i/o error occurs.
EOFException:
Thrown on end of file.
See Also
org.apache.xerces.util.XMLChar#isSpace
skipStringback to summary
public boolean skipString(String s) throws IOException

Skips the specified string appearing immediately on the input.

Note

The characters are consumed only if they are space characters.

Parameters
s:String

The string to skip.

Returns:boolean

Returns true if the string was skipped.

Exceptions
IOException:
Thrown if i/o error occurs.
EOFException:
Thrown on end of file.