public interface XmlVisitor
XmlVisitor
expects the event callbacks in the following order:
CALL SEQUENCE := startDocument ELEMENT endDocument ELEMENT := startPrefixMapping ELEMENT endPrefixMapping | startElement BODY endElement BODY := text? (ELEMENT text?)*Note in particular that text events may not be called in a row; consecutive characters (even those separated by PIs and comments) must be reported as one event, unlike SAX.
All namespace URIs, local names, and prefixes of element and attribute names must be interned. qnames need not be interned.
CharSequence
implementations
that can be used as a parameter to the text(CharSequence)
method.
For example, see Base64Data
.
SAXException
to abort the unmarshalling process
in the middle.Modifier and Type | Interface and Description |
---|---|
static interface |
XmlVisitor.TextPredictor |
Modifier and Type | Method and Description |
---|---|
void |
endDocument() |
void |
endElement(TagName tagName) |
void |
endPrefixMapping(String prefix)
Called after
endElement(com.sun.xml.bind.v2.runtime.unmarshaller.TagName) event to notify the end of a binding. |
UnmarshallingContext |
getContext()
Returns the
UnmarshallingContext at the end of the chain. |
XmlVisitor.TextPredictor |
getPredictor()
Gets the predictor that can be used for the caller to avoid
calling
text(CharSequence) unnecessarily. |
void |
startDocument(LocatorEx locator,
NamespaceContext nsContext)
Notifies a start of the document.
|
void |
startElement(TagName tagName)
Notifies a start tag of a new element.
|
void |
startPrefixMapping(String prefix,
String nsUri)
Called before
startElement(com.sun.xml.bind.v2.runtime.unmarshaller.TagName) event to notify a new namespace binding. |
void |
text(CharSequence pcdata)
Text events.
|
void startDocument(LocatorEx locator, NamespaceContext nsContext) throws SAXException
locator
- This live object returns the location information as the parsing progresses.
must not be null.nsContext
- Some broken XML APIs can't iterate all the in-scope namespace bindings,
which makes it impossible to emulate startPrefixMapping(String, String)
correctly
when unmarshalling a subtree. Connectors that use such an API can
pass in additional NamespaceContext
object that knows about the
in-scope namespace bindings. Otherwise (and normally) it is null.
Ideally this object should be immutable and only represent the namespace URI bindings in the context (those done above the element that JAXB started unmarshalling), but it can also work even if it changes as the parsing progress (to include namespaces declared on the current element being parsed.)
SAXException
void endDocument() throws SAXException
SAXException
void startElement(TagName tagName) throws SAXException
SAXException
void endElement(TagName tagName) throws SAXException
SAXException
void startPrefixMapping(String prefix, String nsUri) throws SAXException
startElement(com.sun.xml.bind.v2.runtime.unmarshaller.TagName)
event to notify a new namespace binding.SAXException
void endPrefixMapping(String prefix) throws SAXException
endElement(com.sun.xml.bind.v2.runtime.unmarshaller.TagName)
event to notify the end of a binding.SAXException
void text(CharSequence pcdata) throws SAXException
The caller should consult XmlVisitor.TextPredictor
to see
if the unmarshaller is expecting any PCDATA. If the above is returning
false, the caller is OK to skip any text in XML. The net effect is
that we can ignore whitespaces quickly.
pcdata
- represents character data. This object can be mutable
(such as StringBuilder
); it only needs to be fixed
while this method is executing.SAXException
UnmarshallingContext getContext()
UnmarshallingContext
at the end of the chain.XmlVisitor.TextPredictor getPredictor()
text(CharSequence)
unnecessarily.Copyright © 2019 JBoss by Red Hat. All rights reserved.