com.sun.xml.bind.v2.runtime.unmarshaller
public interface XmlVisitor
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.
Nested Class Summary | |
---|---|
static interface | XmlVisitor.TextPredictor |
Method Summary | |
---|---|
void | endDocument() |
void | endElement(TagName tagName) |
void | endPrefixMapping(String prefix)
Called after XmlVisitor 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 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.
namespace URIs and local names must be interned. |
void | startPrefixMapping(String prefix, String nsUri)
Called before XmlVisitor event to notify a new namespace binding. |
void | text(CharSequence pcdata)
Text events.
|
Returns: always return the same object, so caching the result is recommended.
Parameters: 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 XmlVisitor 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.)
The caller should consult 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.
Parameters: pcdata represents character data. This object can be mutable (such as StringBuilder); it only needs to be fixed while this method is executing.