public interface XPathStreamObserver
Defines objects which wish to be notified when events
encountered in an
XMLInputStream match a particular
xpath. When the stream's client asks for the
event, it is evaluated against an xpath; if it matches, the
observer is notified of the event via the
observeMatch() just before it is returned to the
XPathSreamObservers will receive
notifications on all of the streams created by the
XPathStreamFactory in which they are installed, it is
usually necessary for them to be stateless unless it can be
guaranteed that the observer will never be accessed by multiple
threads or for matching against different streams.
An example of such a case may occur if a client wishes to alter the stream based on xpath matches. Although this interface does not provide facilities for altering the stream, match-based mutations of the stream can easily be performed by creating a new class which does the following:
XMLInputStreamcreated by that factory.
observeMatchthat produces some state that is consumed by its implementation of
XMLInputStream.next(). Typically, this might mean that
observeMatch()writes replacement events to an intermediate event buffer which is drained by the implementation of
next(), which will always try to return the next element from the buffer, and returns
super.next()only if the buffer is empty.
|Modifier and Type||Method||Description|
Handles notification when an XMLEvent is encountered on the stream which represents a matching node that is not an attribute or namespace node.
Handles notification when an XMLEvent is encountered on the stream which contains an attribute meets the criteria with which the observer was installed in the XPathStreamFactory.
void observe(XMLEvent event)
event- The XMLEvent which matched the XPath.
void observeAttribute(StartElement event, Attribute attribute)
event- The XMLEvent which contains the attribute which matched
attribute- The Attribute which matched