Package gov.nasa.worldwind.util.xml
Class BasicXMLEventParserContext
- java.lang.Object
-
- gov.nasa.worldwind.avlist.AVListImpl
-
- gov.nasa.worldwind.util.xml.BasicXMLEventParserContext
-
- All Implemented Interfaces:
AVList
,XMLEventParserContext
- Direct Known Subclasses:
AtomParserContext
,ColladaParserContext
,GXParserContext
,KMLParserContext
,XALParserContext
public class BasicXMLEventParserContext extends AVListImpl implements XMLEventParserContext
Provides an implementation ofXMLEventParserContext
. This class is meant to be the base class for schema-specific parsers.
-
-
Field Summary
Fields Modifier and Type Field Description static javax.xml.namespace.QName
BOOLEAN
The parser name of the default boolean parser.static javax.xml.namespace.QName
BOOLEAN_INTEGER
The parser name of the default boolean integer parser.protected BooleanIntegerXMLEventParser
booleanIntegerParser
protected BooleanXMLEventParser
booleanParser
protected java.lang.String
defaultNamespaceURI
static javax.xml.namespace.QName
DOUBLE
The parser name of the default double parser.protected DoubleXMLEventParser
doubleParser
protected java.util.concurrent.ConcurrentHashMap<java.lang.String,java.lang.Object>
idTable
static javax.xml.namespace.QName
INTEGER
The parser name of the default integer parser.protected IntegerXMLEventParser
integerParser
protected XMLParserNotificationListener
notificationListener
protected java.util.concurrent.ConcurrentHashMap<javax.xml.namespace.QName,XMLEventParser>
parsers
protected javax.xml.stream.XMLEventReader
reader
static javax.xml.namespace.QName
STRING
The parser name of the default string parser.protected StringXMLEventParser
stringParser
static javax.xml.namespace.QName
UNRECOGNIZED
The parser name of the unrecognized-element parser.-
Fields inherited from interface gov.nasa.worldwind.util.xml.XMLEventParserContext
UNRECOGNIZED_ELEMENT_PARSER
-
-
Constructor Summary
Constructors Constructor Description BasicXMLEventParserContext()
Construct an instance.BasicXMLEventParserContext(BasicXMLEventParserContext ctx)
BasicXMLEventParserContext(javax.xml.stream.XMLEventReader eventReader)
Construct an instance for a specified event reader.BasicXMLEventParserContext(javax.xml.stream.XMLEventReader eventReader, java.lang.String defaultNamespace)
Construct an instance for a specified event reader and default namespace.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addBooleanIntegerParsers(java.lang.String namespace, java.lang.String[] booleanIntegerFields)
Add boolean integer parsers for a list of element types and qualified for a specified namespace.void
addBooleanParsers(java.lang.String namespace, java.lang.String[] booleanFields)
Add boolean parsers for a list of element types and qualified for a specified namespace.void
addDoubleParsers(java.lang.String namespace, java.lang.String[] doubleFields)
Add double parsers for a list of element types and qualified for a specified namespace.void
addId(java.lang.String id, java.lang.Object o)
Adds a mapping of an id attribute to its associated KML object.void
addIntegerParsers(java.lang.String namespace, java.lang.String[] integerFields)
Add integer parsers for a list of element types and qualified for a specified namespace.void
addStringParsers(java.lang.String namespace, java.lang.String[] stringFields)
Add string list parsers for a list of element types and qualified for a specified namespace.XMLEventParser
allocate(javax.xml.stream.events.XMLEvent event)
Create a parser for a specified event's element name, if a parser for that name is registered with the context.XMLEventParser
allocate(javax.xml.stream.events.XMLEvent event, XMLEventParser defaultParser)
Create a parser for a specified event's element name, if a parser for that name is registered with the context.BooleanIntegerXMLEventParser
getBooleanIntegerParser()
Returns the default parser for a simple boolean integer (0 or 1).BooleanXMLEventParser
getBooleanParser()
Returns the default parser for a simple boolean.java.lang.String
getCharacters(javax.xml.stream.events.XMLEvent event)
Returns the text associated with the event.java.lang.String
getDefaultNamespaceURI()
Returns the context's default namespace URI.DoubleXMLEventParser
getDoubleParser()
Returns a parser for a simple double.javax.xml.stream.XMLEventReader
getEventReader()
Returns the event reader used by this instance.java.util.Map<java.lang.String,java.lang.Object>
getIdTable()
Returns the table associating objects with their id attribute as specified in the object's KML file.IntegerXMLEventParser
getIntegerParser()
Returns the default parser for a simple integer.XMLEventParser
getParser(javax.xml.namespace.QName name)
Returns a new parser for a specified element name.XMLEventParser
getParser(javax.xml.stream.events.XMLEvent event)
Returns a new parser for a specified event.protected XMLEventParser
getParser(javax.xml.stream.events.XMLEvent event, XMLEventParser defaultParser)
StringXMLEventParser
getStringParser()
Returns the default parser for a simple string.XMLEventParser
getUnrecognizedElementParser()
Returns a parser to handle unrecognized elements.boolean
hasNext()
Indicates whether the event stream associated with this context contains another event.protected void
initialize()
protected void
initializeDefaultNotificationListener()
protected void
initializeParsers()
Initializes the parser table with the default parsers for the strings, integers, etc., qualified for the default namespace.boolean
isDefaultNamespace(java.lang.String namespaceURI)
Indicates whether the specified namespace URI is the default namespace URI used by this parser context.boolean
isEndElement(javax.xml.stream.events.XMLEvent event, javax.xml.stream.events.XMLEvent startElement)
Determines whether an event is the corresponding end element for a specified start event.static boolean
isEndElementEvent(javax.xml.stream.events.XMLEvent event, javax.xml.stream.events.XMLEvent startElement)
protected static boolean
isNullNamespace(java.lang.String namespaceURI)
boolean
isSameAttributeName(javax.xml.namespace.QName qa, javax.xml.namespace.QName qb)
Determines whether two fully qualified attribute names are the same.boolean
isSameName(javax.xml.namespace.QName qa, javax.xml.namespace.QName qb)
Determines whether two element names are the same.boolean
isStartElement(javax.xml.stream.events.XMLEvent event, java.lang.String elementName)
Determines whether an event is a start event for a specific event type indicated by its local name.boolean
isStartElement(javax.xml.stream.events.XMLEvent event, javax.xml.namespace.QName elementName)
Determines whether an event is a start event for a specific event type.javax.xml.stream.events.XMLEvent
nextEvent()
Returns the next event in the event stream associated with this context.void
registerParser(javax.xml.namespace.QName elementName, XMLEventParser parser)
Registers a parser for a specified element name.void
setDefaultNamespaceURI(java.lang.String defaultNamespaceURI)
Specifies the context's default namespace URI.void
setEventReader(javax.xml.stream.XMLEventReader reader)
Specify the event reader for the parser context to use to parse XML.void
setNotificationListener(XMLParserNotificationListener listener)
Specify the object to receive notifications, which are sent when exceptions occur during parsing and when unrecognized element types are encountered.-
Methods inherited from class gov.nasa.worldwind.avlist.AVListImpl
addPropertyChangeListener, addPropertyChangeListener, clearList, copy, firePropertyChange, firePropertyChange, getBooleanValue, getBooleanValue, getChangeSupport, getDoubleValue, getDoubleValue, getEntries, getIntegerValue, getIntegerValue, getLongValue, getLongValue, getRestorableStateForAVPair, getStringValue, getStringValue, getStringValue, getValue, getValues, hasKey, removeKey, removePropertyChangeListener, removePropertyChangeListener, setValue, setValues
-
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface gov.nasa.worldwind.avlist.AVList
addPropertyChangeListener, addPropertyChangeListener, clearList, copy, firePropertyChange, firePropertyChange, getEntries, getStringValue, getValue, getValues, hasKey, removeKey, removePropertyChangeListener, removePropertyChangeListener, setValue, setValues
-
-
-
-
Field Detail
-
DOUBLE
public static javax.xml.namespace.QName DOUBLE
The parser name of the default double parser.
-
INTEGER
public static javax.xml.namespace.QName INTEGER
The parser name of the default integer parser.
-
STRING
public static javax.xml.namespace.QName STRING
The parser name of the default string parser.
-
BOOLEAN
public static javax.xml.namespace.QName BOOLEAN
The parser name of the default boolean parser.
-
BOOLEAN_INTEGER
public static javax.xml.namespace.QName BOOLEAN_INTEGER
The parser name of the default boolean integer parser.
-
UNRECOGNIZED
public static javax.xml.namespace.QName UNRECOGNIZED
The parser name of the unrecognized-element parser.
-
reader
protected javax.xml.stream.XMLEventReader reader
-
stringParser
protected StringXMLEventParser stringParser
-
doubleParser
protected DoubleXMLEventParser doubleParser
-
integerParser
protected IntegerXMLEventParser integerParser
-
booleanParser
protected BooleanXMLEventParser booleanParser
-
booleanIntegerParser
protected BooleanIntegerXMLEventParser booleanIntegerParser
-
defaultNamespaceURI
protected java.lang.String defaultNamespaceURI
-
notificationListener
protected XMLParserNotificationListener notificationListener
-
idTable
protected java.util.concurrent.ConcurrentHashMap<java.lang.String,java.lang.Object> idTable
-
parsers
protected java.util.concurrent.ConcurrentHashMap<javax.xml.namespace.QName,XMLEventParser> parsers
-
-
Constructor Detail
-
BasicXMLEventParserContext
public BasicXMLEventParserContext()
Construct an instance. InvokesinitializeParsers()
andinitialize()
.
-
BasicXMLEventParserContext
public BasicXMLEventParserContext(javax.xml.stream.XMLEventReader eventReader)
Construct an instance for a specified event reader. InvokesinitializeParsers()
andinitialize()
.- Parameters:
eventReader
- the event reader to use for XML parsing.
-
BasicXMLEventParserContext
public BasicXMLEventParserContext(javax.xml.stream.XMLEventReader eventReader, java.lang.String defaultNamespace)
Construct an instance for a specified event reader and default namespace. InvokesinitializeParsers()
andinitialize()
.- Parameters:
eventReader
- the event reader to use for XML parsing.defaultNamespace
- the namespace URI of the default namespace.
-
BasicXMLEventParserContext
public BasicXMLEventParserContext(BasicXMLEventParserContext ctx)
-
-
Method Detail
-
initialize
protected void initialize()
-
initializeDefaultNotificationListener
protected void initializeDefaultNotificationListener()
-
initializeParsers
protected void initializeParsers()
Initializes the parser table with the default parsers for the strings, integers, etc., qualified for the default namespace.
-
addStringParsers
public void addStringParsers(java.lang.String namespace, java.lang.String[] stringFields)
Description copied from interface:XMLEventParserContext
Add string list parsers for a list of element types and qualified for a specified namespace.- Specified by:
addStringParsers
in interfaceXMLEventParserContext
- Parameters:
namespace
- the namespace URI.stringFields
- the string list parser names.
-
addDoubleParsers
public void addDoubleParsers(java.lang.String namespace, java.lang.String[] doubleFields)
Description copied from interface:XMLEventParserContext
Add double parsers for a list of element types and qualified for a specified namespace.- Specified by:
addDoubleParsers
in interfaceXMLEventParserContext
- Parameters:
namespace
- the namespace URI.doubleFields
- the string parsers.
-
addIntegerParsers
public void addIntegerParsers(java.lang.String namespace, java.lang.String[] integerFields)
Description copied from interface:XMLEventParserContext
Add integer parsers for a list of element types and qualified for a specified namespace.- Specified by:
addIntegerParsers
in interfaceXMLEventParserContext
- Parameters:
namespace
- the namespace URI.integerFields
- the string parsers.
-
addBooleanParsers
public void addBooleanParsers(java.lang.String namespace, java.lang.String[] booleanFields)
Description copied from interface:XMLEventParserContext
Add boolean parsers for a list of element types and qualified for a specified namespace.- Specified by:
addBooleanParsers
in interfaceXMLEventParserContext
- Parameters:
namespace
- the namespace URI.booleanFields
- the string parsers.
-
addBooleanIntegerParsers
public void addBooleanIntegerParsers(java.lang.String namespace, java.lang.String[] booleanIntegerFields)
Description copied from interface:XMLEventParserContext
Add boolean integer parsers for a list of element types and qualified for a specified namespace.- Specified by:
addBooleanIntegerParsers
in interfaceXMLEventParserContext
- Parameters:
namespace
- the namespace URI.booleanIntegerFields
- the string parser.
-
getEventReader
public javax.xml.stream.XMLEventReader getEventReader()
Returns the event reader used by this instance.- Specified by:
getEventReader
in interfaceXMLEventParserContext
- Returns:
- the instance's event reader.
-
setEventReader
public void setEventReader(javax.xml.stream.XMLEventReader reader)
Specify the event reader for the parser context to use to parse XML.- Parameters:
reader
- the event reader to use.
-
getDefaultNamespaceURI
public java.lang.String getDefaultNamespaceURI()
Description copied from interface:XMLEventParserContext
Returns the context's default namespace URI.- Specified by:
getDefaultNamespaceURI
in interfaceXMLEventParserContext
- Returns:
- the context's default namespace URI.
- See Also:
XMLEventParserContext.setDefaultNamespaceURI(String)
-
setDefaultNamespaceURI
public void setDefaultNamespaceURI(java.lang.String defaultNamespaceURI)
Description copied from interface:XMLEventParserContext
Specifies the context's default namespace URI. Must be called prior to initiating the parser table if this context's parsers will be qualified for the default namespace.- Specified by:
setDefaultNamespaceURI
in interfaceXMLEventParserContext
- Parameters:
defaultNamespaceURI
- the default namespace URI.- See Also:
XMLEventParserContext.getDefaultNamespaceURI()
,XMLEventParserContext.isSameName(javax.xml.namespace.QName, javax.xml.namespace.QName)
-
setNotificationListener
public void setNotificationListener(XMLParserNotificationListener listener)
Description copied from interface:XMLEventParserContext
Specify the object to receive notifications, which are sent when exceptions occur during parsing and when unrecognized element types are encountered. SeeXMLParserNotification
for more information.The parser context may have only one notification listener. That listener may be changed at any time.
- Specified by:
setNotificationListener
in interfaceXMLEventParserContext
- Parameters:
listener
- the object to receive notification events.
-
getIdTable
public java.util.Map<java.lang.String,java.lang.Object> getIdTable()
Description copied from interface:XMLEventParserContext
Returns the table associating objects with their id attribute as specified in the object's KML file.- Specified by:
getIdTable
in interfaceXMLEventParserContext
- Returns:
- the mapping table.
-
addId
public void addId(java.lang.String id, java.lang.Object o)
Description copied from interface:XMLEventParserContext
Adds a mapping of an id attribute to its associated KML object.- Specified by:
addId
in interfaceXMLEventParserContext
- Parameters:
id
- the object id. If null, this method returns without creating a mapping.o
- the object to associate with the id.
-
hasNext
public boolean hasNext()
Description copied from interface:XMLEventParserContext
Indicates whether the event stream associated with this context contains another event.- Specified by:
hasNext
in interfaceXMLEventParserContext
- Returns:
- true if the stream contains another event, otherwise false.
- See Also:
XMLEventReader.hasNext()
-
nextEvent
public javax.xml.stream.events.XMLEvent nextEvent() throws javax.xml.stream.XMLStreamException
Description copied from interface:XMLEventParserContext
Returns the next event in the event stream associated with this context.- Specified by:
nextEvent
in interfaceXMLEventParserContext
- Returns:
- the next event,
- Throws:
javax.xml.stream.XMLStreamException
- if there is an error with the underlying XML.- See Also:
XMLEventReader.nextEvent()
-
allocate
public XMLEventParser allocate(javax.xml.stream.events.XMLEvent event, XMLEventParser defaultParser)
Description copied from interface:XMLEventParserContext
Create a parser for a specified event's element name, if a parser for that name is registered with the context.- Specified by:
allocate
in interfaceXMLEventParserContext
- Parameters:
event
- the event whose element name identifies the parser to create.defaultParser
- a parser to return if no parser is registered for the specified name. May be null.- Returns:
- a new parser, or the specified default parser if no parser has been registered for the element name.
-
allocate
public XMLEventParser allocate(javax.xml.stream.events.XMLEvent event)
Description copied from interface:XMLEventParserContext
Create a parser for a specified event's element name, if a parser for that name is registered with the context.- Specified by:
allocate
in interfaceXMLEventParserContext
- Parameters:
event
- the event whose element name identifies the parser to create.- Returns:
- a new parser, or the specified default parser if no parser has been registered for the element name.
-
getParser
public XMLEventParser getParser(javax.xml.stream.events.XMLEvent event)
Description copied from interface:XMLEventParserContext
Returns a new parser for a specified event.- Specified by:
getParser
in interfaceXMLEventParserContext
- Parameters:
event
- indicates the element name for which a parser is created.- Returns:
- the new parser, or null if no parser has been registered for the specified event's element name.
-
getParser
protected XMLEventParser getParser(javax.xml.stream.events.XMLEvent event, XMLEventParser defaultParser)
-
getStringParser
public StringXMLEventParser getStringParser()
Description copied from interface:XMLEventParserContext
Returns the default parser for a simple string.- Specified by:
getStringParser
in interfaceXMLEventParserContext
- Returns:
- a string parser.
-
getDoubleParser
public DoubleXMLEventParser getDoubleParser()
Description copied from interface:XMLEventParserContext
Returns a parser for a simple double.- Specified by:
getDoubleParser
in interfaceXMLEventParserContext
- Returns:
- a double parser.
-
getIntegerParser
public IntegerXMLEventParser getIntegerParser()
Description copied from interface:XMLEventParserContext
Returns the default parser for a simple integer.- Specified by:
getIntegerParser
in interfaceXMLEventParserContext
- Returns:
- an integer parser.
-
getBooleanParser
public BooleanXMLEventParser getBooleanParser()
Description copied from interface:XMLEventParserContext
Returns the default parser for a simple boolean.- Specified by:
getBooleanParser
in interfaceXMLEventParserContext
- Returns:
- a boolean parser.
-
getBooleanIntegerParser
public BooleanIntegerXMLEventParser getBooleanIntegerParser()
Description copied from interface:XMLEventParserContext
Returns the default parser for a simple boolean integer (0 or 1).- Specified by:
getBooleanIntegerParser
in interfaceXMLEventParserContext
- Returns:
- a boolean integer parser.
-
getUnrecognizedElementParser
public XMLEventParser getUnrecognizedElementParser()
Returns a parser to handle unrecognized elements. The default unrecognized event parser isUnrecognizedXMLEventParser
, and may be replaced by callingregisterParser(javax.xml.namespace.QName, XMLEventParser)
and specifyingUNRECOGNIZED
as the parser name.- Specified by:
getUnrecognizedElementParser
in interfaceXMLEventParserContext
- Returns:
- a parser to handle unrecognized elements.
-
getCharacters
public java.lang.String getCharacters(javax.xml.stream.events.XMLEvent event)
Description copied from interface:XMLEventParserContext
Returns the text associated with the event.- Specified by:
getCharacters
in interfaceXMLEventParserContext
- Parameters:
event
- the event of interest.- Returns:
- the event's characters, or null if the event is not a character event.
-
isSameName
public boolean isSameName(javax.xml.namespace.QName qa, javax.xml.namespace.QName qb)
Description copied from interface:XMLEventParserContext
Determines whether two element names are the same.- Specified by:
isSameName
in interfaceXMLEventParserContext
- Parameters:
qa
- first element nameqb
- second element name- Returns:
- true if both names have the same namespace (or no namespace) and local name, or if either name has no namespace but the namespace of the other is the context's default namespace.
-
isSameAttributeName
public boolean isSameAttributeName(javax.xml.namespace.QName qa, javax.xml.namespace.QName qb)
Description copied from interface:XMLEventParserContext
Determines whether two fully qualified attribute names are the same.- Specified by:
isSameAttributeName
in interfaceXMLEventParserContext
- Parameters:
qa
- the first attribute name.qb
- the second attribute name.- Returns:
- true if the names are the same, otherwise false.
-
isStartElement
public boolean isStartElement(javax.xml.stream.events.XMLEvent event, javax.xml.namespace.QName elementName)
Description copied from interface:XMLEventParserContext
Determines whether an event is a start event for a specific event type.- Specified by:
isStartElement
in interfaceXMLEventParserContext
- Parameters:
event
- an event identifying the event type of interest.elementName
- the event name.- Returns:
- true if the event is a start event for the named event type.
-
isStartElement
public boolean isStartElement(javax.xml.stream.events.XMLEvent event, java.lang.String elementName)
Description copied from interface:XMLEventParserContext
Determines whether an event is a start event for a specific event type indicated by its local name.- Specified by:
isStartElement
in interfaceXMLEventParserContext
- Parameters:
event
- an event identifying the event type of interest.elementName
- the local part of the event name to match.- Returns:
- true if the event is a start event for the named event type.
-
isEndElement
public boolean isEndElement(javax.xml.stream.events.XMLEvent event, javax.xml.stream.events.XMLEvent startElement)
Description copied from interface:XMLEventParserContext
Determines whether an event is the corresponding end element for a specified start event.Note: Only the event's element name and type are compared. The method returns true if the start and end events are the corresponding event types for an element of the same name.
- Specified by:
isEndElement
in interfaceXMLEventParserContext
- Parameters:
event
- the event of interest.startElement
- the start event associated with the potential end event.- Returns:
- true if the event is the corresponding end event to the specified start event, otherwise false.
-
isEndElementEvent
public static boolean isEndElementEvent(javax.xml.stream.events.XMLEvent event, javax.xml.stream.events.XMLEvent startElement)
-
registerParser
public void registerParser(javax.xml.namespace.QName elementName, XMLEventParser parser)
Description copied from interface:XMLEventParserContext
Registers a parser for a specified element name. A parser of the same type and namespace is returned whenXMLEventParserContext.getParser(javax.xml.stream.events.XMLEvent)
is called for the same element name.- Specified by:
registerParser
in interfaceXMLEventParserContext
- Parameters:
elementName
- the element name for which to return a parser.parser
- the parser to register.
-
getParser
public XMLEventParser getParser(javax.xml.namespace.QName name)
Description copied from interface:XMLEventParserContext
Returns a new parser for a specified element name.- Specified by:
getParser
in interfaceXMLEventParserContext
- Parameters:
name
- indicates the element name for which a parser is created.- Returns:
- the new parser, or null if no parser has been registered for the specified element name.
-
isNullNamespace
protected static boolean isNullNamespace(java.lang.String namespaceURI)
-
isDefaultNamespace
public boolean isDefaultNamespace(java.lang.String namespaceURI)
Description copied from interface:XMLEventParserContext
Indicates whether the specified namespace URI is the default namespace URI used by this parser context.- Specified by:
isDefaultNamespace
in interfaceXMLEventParserContext
- Parameters:
namespaceURI
- the namespace URI to check.- Returns:
- true if the specified namespace is the default namespace, otherwise false.
-
-