Minor tweaks
git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3620 50f2f4bb-b051-0410-bef5-90022cba6387
This commit is contained in:
parent
1a62ecb846
commit
438bd89d2a
|
|
@ -57,8 +57,14 @@ import org.springframework.util.StringUtils;
|
|||
*/
|
||||
class StaxEventXMLReader extends AbstractStaxXMLReader {
|
||||
|
||||
private static final String DEFAULT_XML_VERSION = "1.0";
|
||||
|
||||
private final XMLEventReader reader;
|
||||
|
||||
private String xmlVersion = DEFAULT_XML_VERSION;
|
||||
|
||||
private String encoding;
|
||||
|
||||
/**
|
||||
* Constructs a new instance of the <code>StaxEventXmlReader</code> that reads from the given
|
||||
* <code>XMLEventReader</code>. The supplied event reader must be in <code>XMLStreamConstants.START_DOCUMENT</code> or
|
||||
|
|
@ -143,6 +149,17 @@ class StaxEventXMLReader extends AbstractStaxXMLReader {
|
|||
}
|
||||
|
||||
private void handleStartDocument(final XMLEvent event) throws SAXException {
|
||||
if (event.isStartDocument()) {
|
||||
StartDocument startDocument = (StartDocument) event;
|
||||
String xmlVersion = startDocument.getVersion();
|
||||
if (StringUtils.hasLength(xmlVersion)) {
|
||||
this.xmlVersion = xmlVersion;
|
||||
}
|
||||
if (startDocument.encodingSet()) {
|
||||
this.encoding = startDocument.getCharacterEncodingScheme();
|
||||
}
|
||||
}
|
||||
|
||||
if (getContentHandler() != null) {
|
||||
final Location location = event.getLocation();
|
||||
getContentHandler().setDocumentLocator(new Locator2() {
|
||||
|
|
@ -164,22 +181,11 @@ class StaxEventXMLReader extends AbstractStaxXMLReader {
|
|||
}
|
||||
|
||||
public String getXMLVersion() {
|
||||
if (event.isStartDocument()) {
|
||||
StartDocument startDocument = (StartDocument) event;
|
||||
String version = startDocument.getVersion();
|
||||
return StringUtils.hasLength(version) ? version : "1.0";
|
||||
}
|
||||
return null;
|
||||
return xmlVersion;
|
||||
}
|
||||
|
||||
public String getEncoding() {
|
||||
if (event.isStartDocument()) {
|
||||
StartDocument startDocument = (StartDocument) event;
|
||||
if (startDocument.encodingSet()) {
|
||||
return startDocument.getCharacterEncodingScheme();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
return encoding;
|
||||
}
|
||||
});
|
||||
|
||||
|
|
@ -195,6 +201,19 @@ class StaxEventXMLReader extends AbstractStaxXMLReader {
|
|||
Namespace namespace = (Namespace) i.next();
|
||||
getContentHandler().startPrefixMapping(namespace.getPrefix(), namespace.getNamespaceURI());
|
||||
}
|
||||
for (Iterator i = startElement.getAttributes(); i.hasNext();){
|
||||
Attribute attribute = (Attribute) i.next();
|
||||
String prefix = attribute.getName().getPrefix();
|
||||
if (prefix == null) {
|
||||
prefix = "";
|
||||
}
|
||||
String namespace = attribute.getName().getNamespaceURI();
|
||||
if (namespace == null) {
|
||||
continue;
|
||||
}
|
||||
getContentHandler().startPrefixMapping(prefix, namespace);
|
||||
}
|
||||
|
||||
getContentHandler().startElement(qName.getNamespaceURI(), qName.getLocalPart(), toQualifiedName(qName),
|
||||
getAttributes(startElement));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,8 +43,14 @@ import org.springframework.util.StringUtils;
|
|||
*/
|
||||
class StaxStreamXMLReader extends AbstractStaxXMLReader {
|
||||
|
||||
private static final String DEFAULT_XML_VERSION = "1.0";
|
||||
|
||||
private final XMLStreamReader reader;
|
||||
|
||||
private String xmlVersion = DEFAULT_XML_VERSION;
|
||||
|
||||
private String encoding;
|
||||
|
||||
/**
|
||||
* Constructs a new instance of the <code>StaxStreamXmlReader</code> that reads from the given
|
||||
* <code>XMLStreamReader</code>. The supplied stream reader must be in <code>XMLStreamConstants.START_DOCUMENT</code>
|
||||
|
|
@ -123,6 +129,14 @@ class StaxStreamXMLReader extends AbstractStaxXMLReader {
|
|||
}
|
||||
|
||||
private void handleStartDocument() throws SAXException {
|
||||
if (XMLStreamConstants.START_DOCUMENT == reader.getEventType()) {
|
||||
String xmlVersion = reader.getVersion();
|
||||
if (StringUtils.hasLength(xmlVersion)) {
|
||||
this.xmlVersion = xmlVersion;
|
||||
}
|
||||
this.encoding = reader.getCharacterEncodingScheme();
|
||||
}
|
||||
|
||||
if (getContentHandler() != null) {
|
||||
final Location location = reader.getLocation();
|
||||
|
||||
|
|
@ -145,12 +159,11 @@ class StaxStreamXMLReader extends AbstractStaxXMLReader {
|
|||
}
|
||||
|
||||
public String getXMLVersion() {
|
||||
String version = reader.getVersion();
|
||||
return StringUtils.hasLength(version) ? version : "1.0";
|
||||
return xmlVersion;
|
||||
}
|
||||
|
||||
public String getEncoding() {
|
||||
return reader.getEncoding();
|
||||
return encoding;
|
||||
}
|
||||
});
|
||||
getContentHandler().startDocument();
|
||||
|
|
@ -171,6 +184,17 @@ class StaxStreamXMLReader extends AbstractStaxXMLReader {
|
|||
}
|
||||
getContentHandler().startPrefixMapping(prefix, reader.getNamespaceURI(i));
|
||||
}
|
||||
for (int i = 0; i < reader.getAttributeCount(); i++) {
|
||||
String prefix = reader.getAttributePrefix(i);
|
||||
if (prefix == null) {
|
||||
prefix = "";
|
||||
}
|
||||
String namespace = reader.getAttributeNamespace(i);
|
||||
if (namespace == null) {
|
||||
continue;
|
||||
}
|
||||
getContentHandler().startPrefixMapping(prefix, namespace);
|
||||
}
|
||||
getContentHandler().startElement(qName.getNamespaceURI(), qName.getLocalPart(), toQualifiedName(qName),
|
||||
getAttributes());
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue