📄 staxevent2sax.java
字号:
//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 handleStartElement(StartElement event) throws XMLStreamException { 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); } } /** * Get the attributes associated with the given START_ELEMENT StAXevent. * * @return the StAX attributes converted to an org.xml.sax.Attributes */ private Attributes getAttributes(StartElement event) { 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; } private void handleNamespace() { // no-op ??? // namespace events don't normally occur outside of a startElement // or endElement } private void handleAttribute() { // no-op ??? // attribute events don't normally occur outside of a startElement // or endElement } private void handleDTD() { // no-op ??? // it seems like we need to pass this info along, but how? } private void handleComment() { // no-op ??? } private void handleEntityReference() { // no-op ??? } private void handleSpace() { // no-op ??? // this event is listed in the javadoc, but not in the spec. } private void handleNotationDecl() { // no-op ??? // this event is listed in the javadoc, but not in the spec. } private void handleEntityDecl() { // no-op ??? // this event is listed in the javadoc, but not in the spec. } private void handleCDATA() { // no-op ??? // this event is listed in the javadoc, but not in the spec. } /** * This class is only used internally so this method should never * be called. */ public DTDHandler getDTDHandler() { return null; } /** * This class is only used internally so this method should never * be called. */ public ErrorHandler getErrorHandler() { return null; } /** * This class is only used internally so this method should never * be called. */ public boolean getFeature(String name) throws SAXNotRecognizedException, SAXNotSupportedException { return false; } /** * This class is only used internally so this method should never * be called. */ public void setFeature(String name, boolean value) throws SAXNotRecognizedException, SAXNotSupportedException { } /** * This class is only used internally so this method should never * be called. */ public void parse(String sysId) throws IOException, SAXException { throw new IOException("This method is not yet implemented."); } /** * This class is only used internally so this method should never * be called. */ public void setDTDHandler(DTDHandler handler) throws NullPointerException { } /** * This class is only used internally so this method should never * be called. */ public void setEntityResolver(EntityResolver resolver) throws NullPointerException { } /** * This class is only used internally so this method should never * be called. */ public EntityResolver getEntityResolver() { return null; } /** * This class is only used internally so this method should never * be called. */ public void setErrorHandler(ErrorHandler handler) throws NullPointerException { } /** * This class is only used internally so this method should never * be called. */ public void setProperty(String name, Object value) throws SAXNotRecognizedException, SAXNotSupportedException { } /** * This class is only used internally so this method should never * be called. */ public Object getProperty(String name) throws SAXNotRecognizedException, SAXNotSupportedException { return null; } /** * This class is only used internally so this method should never * be called. */ public int getColumnNumber() { return 0; } /** * This class is only used internally so this method should never * be called. */ public int getLineNumber() { return 0; } /** * This class is only used internally so this method should never * be called. */ public String getPublicId() { return null; } /** * This class is only used internally so this method should never * be called. */ public String getSystemId() { return null; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -