Methods Summary |
---|
private void | bridge()
try {
// remembers the nest level of elements to know when we are done.
int depth=0;
XMLEvent event = staxEventReader.peek();
if (!event.isStartDocument() && !event.isStartElement()) {
throw new IllegalStateException();
}
// if the parser is on START_DOCUMENT, skip ahead to the first element
while( !event.isStartElement() ) {
if (event.getEventType() == XMLStreamConstants.START_DOCUMENT){
version = ((StartDocument)event).getVersion();
if (((StartDocument)event).encodingSet())
encoding = ((StartDocument)event).getCharacterEncodingScheme();
}
event = staxEventReader.nextEvent();
}
handleStartDocument(event);
do {
// These are all of the events listed in the javadoc for
// XMLEvent.
// The spec only really describes 11 of them.
switch (event.getEventType()) {
case XMLStreamConstants.START_ELEMENT :
depth++;
handleStartElement(event.asStartElement());
break;
case XMLStreamConstants.END_ELEMENT :
handleEndElement(event.asEndElement());
depth--;
break;
case XMLStreamConstants.CHARACTERS :
handleCharacters(event.asCharacters());
break;
case XMLStreamConstants.ENTITY_REFERENCE :
handleEntityReference();
break;
case XMLStreamConstants.PROCESSING_INSTRUCTION :
handlePI((ProcessingInstruction)event);
break;
case XMLStreamConstants.COMMENT :
handleComment();
break;
case XMLStreamConstants.DTD :
handleDTD();
break;
case XMLStreamConstants.ATTRIBUTE :
handleAttribute();
break;
case XMLStreamConstants.NAMESPACE :
handleNamespace();
break;
case XMLStreamConstants.CDATA :
handleCDATA();
break;
case XMLStreamConstants.ENTITY_DECLARATION :
handleEntityDecl();
break;
case XMLStreamConstants.NOTATION_DECLARATION :
handleNotationDecl();
break;
case XMLStreamConstants.SPACE :
handleSpace();
break;
default :
throw new InternalError("processing event: " + event);
}
event=staxEventReader.nextEvent();
} while (depth!=0);
handleEndDocument();
} catch (SAXException e) {
throw new XMLStreamException(e);
}
|
private org.xml.sax.Attributes | getAttributes(javax.xml.stream.events.StartElement event)Get the attributes associated with the given START_ELEMENT StAXevent.
AttributesImpl attrs = new AttributesImpl();
if ( !event.isStartElement() ) {
throw new InternalError(
"getAttributes() attempting to process: " + event);
}
// in SAX, namespace declarations are not part of attributes by default.
// (there's a property to control that, but as far as we are concerned
// we don't use it.) So don't add xmlns:* to attributes.
// gather non-namespace attrs
for (Iterator i = event.getAttributes(); i.hasNext();) {
Attribute staxAttr = (javax.xml.stream.events.Attribute)i.next();
String uri = staxAttr.getName().getNamespaceURI();
if (uri == null) {
uri = "";
}
String localName = staxAttr.getName().getLocalPart();
String prefix = staxAttr.getName().getPrefix();
String qName;
if (prefix == null || prefix.length() == 0) {
qName = localName;
} else {
qName = prefix + ':" + localName;
}
String type = staxAttr.getDTDType();
String value = staxAttr.getValue();
attrs.addAttribute(uri, localName, qName, type, value);
}
return attrs;
|
public int | getColumnNumber()This class is only used internally so this method should never
be called.
return 0;
|
public org.xml.sax.ContentHandler | getContentHandler()
return _sax;
|
public org.xml.sax.DTDHandler | getDTDHandler()This class is only used internally so this method should never
be called.
return null;
|
public org.xml.sax.EntityResolver | getEntityResolver()This class is only used internally so this method should never
be called.
return null;
|
public org.xml.sax.ErrorHandler | getErrorHandler()This class is only used internally so this method should never
be called.
return null;
|
public boolean | getFeature(java.lang.String name)This class is only used internally so this method should never
be called.
return false;
|
public int | getLineNumber()This class is only used internally so this method should never
be called.
return 0;
|
public java.lang.Object | getProperty(java.lang.String name)This class is only used internally so this method should never
be called.
return null;
|
public java.lang.String | getPublicId()This class is only used internally so this method should never
be called.
return null;
|
public java.lang.String | getSystemId()This class is only used internally so this method should never
be called.
return null;
|
private void | handleAttribute()
// no-op ???
// attribute events don't normally occur outside of a startElement
// or endElement
|
private void | handleCDATA()
// no-op ???
// this event is listed in the javadoc, but not in the spec.
|
private void | handleCharacters(javax.xml.stream.events.Characters event)
try {
_sax.characters(
event.getData().toCharArray(),
0,
event.getData().length());
} catch (SAXException e) {
throw new XMLStreamException(e);
}
|
private void | handleComment()
// no-op ???
|
private void | handleDTD()
// no-op ???
// it seems like we need to pass this info along, but how?
|
private void | handleEndDocument()
_sax.endDocument();
|
private void | handleEndElement(javax.xml.stream.events.EndElement event)
QName qName = event.getName();
//construct prefix:localName from qName
String qname = "";
if (qName.getPrefix() != null && qName.getPrefix().trim().length() != 0){
qname = qName.getPrefix() + ":";
}
qname += qName.getLocalPart();
try {
// fire endElement
_sax.endElement(
qName.getNamespaceURI(),
qName.getLocalPart(),
qname);
// end namespace bindings
for( Iterator i = event.getNamespaces(); i.hasNext();) {
String prefix = (String)i.next();
if( prefix == null ) { // true for default namespace
prefix = "";
}
_sax.endPrefixMapping(prefix);
}
} catch (SAXException e) {
throw new XMLStreamException(e);
}
|
private void | handleEntityDecl()
// no-op ???
// this event is listed in the javadoc, but not in the spec.
|
private void | handleEntityReference()
// no-op ???
|
private void | handleNamespace()
// no-op ???
// namespace events don't normally occur outside of a startElement
// or endElement
|
private void | handleNotationDecl()
// no-op ???
// this event is listed in the javadoc, but not in the spec.
|
private void | handlePI(javax.xml.stream.events.ProcessingInstruction event)
try {
_sax.processingInstruction(
event.getTarget(),
event.getData());
} catch (SAXException e) {
throw new XMLStreamException(e);
}
|
private void | handleSpace()
// no-op ???
// this event is listed in the javadoc, but not in the spec.
|
private void | handleStartDocument(javax.xml.stream.events.XMLEvent event)
_sax.setDocumentLocator(new Locator2() {
public int getColumnNumber() {
return event.getLocation().getColumnNumber();
}
public int getLineNumber() {
return event.getLocation().getLineNumber();
}
public String getPublicId() {
return event.getLocation().getPublicId();
}
public String getSystemId() {
return event.getLocation().getSystemId();
}
public String getXMLVersion(){
return version;
}
public String getEncoding(){
return encoding;
}
});
_sax.startDocument();
|
private void | handleStartElement(javax.xml.stream.events.StartElement event)
try {
// start namespace bindings
for (Iterator i = event.getNamespaces(); i.hasNext();) {
String prefix = ((Namespace)i.next()).getPrefix();
if (prefix == null) { // true for default namespace
prefix = "";
}
_sax.startPrefixMapping(
prefix,
event.getNamespaceURI(prefix));
}
// fire startElement
QName qName = event.getName();
String prefix = qName.getPrefix();
String rawname;
if (prefix == null || prefix.length() == 0) {
rawname = qName.getLocalPart();
} else {
rawname = prefix + ':" + qName.getLocalPart();
}
Attributes saxAttrs = getAttributes(event);
_sax.startElement(
qName.getNamespaceURI(),
qName.getLocalPart(),
rawname,
saxAttrs);
} catch (SAXException e) {
throw new XMLStreamException(e);
}
|
public void | parse(java.lang.String sysId)This class is only used internally so this method should never
be called.
throw new IOException("This method is not yet implemented.");
|
public void | parse(org.xml.sax.InputSource unused)
try {
bridge();
} catch (XMLStreamException e) {
throw new SAXException(e);
}
|
public void | parse()
bridge();
|
public void | setContentHandler(org.xml.sax.ContentHandler handler)
_sax = handler;
if (handler instanceof LexicalHandler) {
_lex = (LexicalHandler) handler;
}
if (handler instanceof SAXImpl) {
_saxImpl = (SAXImpl)handler;
}
|
public void | setDTDHandler(org.xml.sax.DTDHandler handler)This class is only used internally so this method should never
be called.
|
public void | setEntityResolver(org.xml.sax.EntityResolver resolver)This class is only used internally so this method should never
be called.
|
public void | setErrorHandler(org.xml.sax.ErrorHandler handler)This class is only used internally so this method should never
be called.
|
public void | setFeature(java.lang.String name, boolean value)This class is only used internally so this method should never
be called.
|
public void | setProperty(java.lang.String name, java.lang.Object value)This class is only used internally so this method should never
be called.
|