下面列出了javax.xml.transform.stream.StreamSource#getInputStream ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/**
* Template method for handling {@code StreamSource}s.
* <p>This implementation delegates to {@code unmarshalInputStream} or {@code unmarshalReader}.
* @param streamSource the {@code StreamSource}
* @return the object graph
* @throws IOException if an I/O exception occurs
* @throws XmlMappingException if the given source cannot be mapped to an object
*/
protected Object unmarshalStreamSource(StreamSource streamSource) throws XmlMappingException, IOException {
if (streamSource.getInputStream() != null) {
if (isProcessExternalEntities() && isSupportDtd()) {
return unmarshalInputStream(streamSource.getInputStream());
}
else {
InputSource inputSource = new InputSource(streamSource.getInputStream());
inputSource.setEncoding(getDefaultEncoding());
return unmarshalSaxSource(new SAXSource(inputSource));
}
}
else if (streamSource.getReader() != null) {
if (isProcessExternalEntities() && isSupportDtd()) {
return unmarshalReader(streamSource.getReader());
}
else {
return unmarshalSaxSource(new SAXSource(new InputSource(streamSource.getReader())));
}
}
else {
return unmarshalSaxSource(new SAXSource(new InputSource(streamSource.getSystemId())));
}
}
XMLInputSource jaxpSourcetoXMLInputSource(Source source){
if(source instanceof StreamSource){
StreamSource stSource = (StreamSource)source;
String systemId = stSource.getSystemId();
String publicId = stSource.getPublicId();
InputStream istream = stSource.getInputStream();
Reader reader = stSource.getReader();
if(istream != null){
return new XMLInputSource(publicId, systemId, null, istream, null);
}
else if(reader != null){
return new XMLInputSource(publicId, systemId,null, reader, null);
}else{
return new XMLInputSource(publicId, systemId, null);
}
}
throw new UnsupportedOperationException("Cannot create " +
"XMLStreamReader or XMLEventReader from a " +
source.getClass().getName());
}
protected Source processSource(Source source) {
if (source instanceof StreamSource) {
StreamSource streamSource = (StreamSource) source;
InputSource inputSource = new InputSource(streamSource.getInputStream());
try {
XMLReader xmlReader = XMLReaderFactory.createXMLReader();
xmlReader.setFeature("http://apache.org/xml/features/disallow-doctype-decl", !isSupportDtd());
String featureName = "http://xml.org/sax/features/external-general-entities";
xmlReader.setFeature(featureName, isProcessExternalEntities());
if (!isProcessExternalEntities()) {
xmlReader.setEntityResolver(NO_OP_ENTITY_RESOLVER);
}
return new SAXSource(xmlReader, inputSource);
}
catch (SAXException ex) {
logger.warn("Processing of external entities could not be disabled", ex);
return source;
}
}
else {
return source;
}
}
XMLInputSource jaxpSourcetoXMLInputSource(Source source){
if(source instanceof StreamSource){
StreamSource stSource = (StreamSource)source;
String systemId = stSource.getSystemId();
String publicId = stSource.getPublicId();
InputStream istream = stSource.getInputStream();
Reader reader = stSource.getReader();
if(istream != null){
return new XMLInputSource(publicId, systemId, null, istream, null);
}
else if(reader != null){
return new XMLInputSource(publicId, systemId,null, reader, null);
}else{
return new XMLInputSource(publicId, systemId, null);
}
}
throw new UnsupportedOperationException("Cannot create " +
"XMLStreamReader or XMLEventReader from a " +
source.getClass().getName());
}
XMLInputSource jaxpSourcetoXMLInputSource(Source source){
if(source instanceof StreamSource){
StreamSource stSource = (StreamSource)source;
String systemId = stSource.getSystemId();
String publicId = stSource.getPublicId();
InputStream istream = stSource.getInputStream();
Reader reader = stSource.getReader();
if(istream != null){
return new XMLInputSource(publicId, systemId, null, istream, null);
}
else if(reader != null){
return new XMLInputSource(publicId, systemId,null, reader, null);
}else{
return new XMLInputSource(publicId, systemId, null);
}
}
throw new UnsupportedOperationException("Cannot create " +
"XMLStreamReader or XMLEventReader from a " +
source.getClass().getName());
}
/**
* Template method for handling {@code StreamSource}s.
* <p>This implementation delegates to {@code unmarshalInputStream} or {@code unmarshalReader}.
* @param streamSource the {@code StreamSource}
* @return the object graph
* @throws IOException if an I/O exception occurs
* @throws XmlMappingException if the given source cannot be mapped to an object
*/
protected Object unmarshalStreamSource(StreamSource streamSource) throws XmlMappingException, IOException {
if (streamSource.getInputStream() != null) {
if (isProcessExternalEntities() && isSupportDtd()) {
return unmarshalInputStream(streamSource.getInputStream());
}
else {
InputSource inputSource = new InputSource(streamSource.getInputStream());
inputSource.setEncoding(getDefaultEncoding());
return unmarshalSaxSource(new SAXSource(inputSource));
}
}
else if (streamSource.getReader() != null) {
if (isProcessExternalEntities() && isSupportDtd()) {
return unmarshalReader(streamSource.getReader());
}
else {
return unmarshalSaxSource(new SAXSource(new InputSource(streamSource.getReader())));
}
}
else {
return unmarshalSaxSource(new SAXSource(new InputSource(streamSource.getSystemId())));
}
}
XMLInputSource jaxpSourcetoXMLInputSource(Source source){
if(source instanceof StreamSource){
StreamSource stSource = (StreamSource)source;
String systemId = stSource.getSystemId();
String publicId = stSource.getPublicId();
InputStream istream = stSource.getInputStream();
Reader reader = stSource.getReader();
if(istream != null){
return new XMLInputSource(publicId, systemId, null, istream, null);
}
else if(reader != null){
return new XMLInputSource(publicId, systemId,null, reader, null);
}else{
return new XMLInputSource(publicId, systemId, null);
}
}
throw new UnsupportedOperationException("Cannot create " +
"XMLStreamReader or XMLEventReader from a " +
source.getClass().getName());
}
XMLInputSource jaxpSourcetoXMLInputSource(Source source){
if(source instanceof StreamSource){
StreamSource stSource = (StreamSource)source;
String systemId = stSource.getSystemId();
String publicId = stSource.getPublicId();
InputStream istream = stSource.getInputStream();
Reader reader = stSource.getReader();
if(istream != null){
return new XMLInputSource(publicId, systemId, null, istream, null);
}
else if(reader != null){
return new XMLInputSource(publicId, systemId,null, reader, null);
}else{
return new XMLInputSource(publicId, systemId, null);
}
}
throw new UnsupportedOperationException("Cannot create " +
"XMLStreamReader or XMLEventReader from a " +
source.getClass().getName());
}
XMLInputSource jaxpSourcetoXMLInputSource(Source source){
if(source instanceof StreamSource){
StreamSource stSource = (StreamSource)source;
String systemId = stSource.getSystemId();
String publicId = stSource.getPublicId();
InputStream istream = stSource.getInputStream();
Reader reader = stSource.getReader();
if(istream != null){
return new XMLInputSource(publicId, systemId, null, istream, null);
}
else if(reader != null){
return new XMLInputSource(publicId, systemId,null, reader, null);
}else{
return new XMLInputSource(publicId, systemId, null);
}
}
throw new UnsupportedOperationException("Cannot create " +
"XMLStreamReader or XMLEventReader from a " +
source.getClass().getName());
}
/**
* Creates a proper {@link XMLInputSource} from a {@link StreamSource}.
*
* @return always return non-null valid object.
*/
public static final XMLInputSource toXMLInputSource( StreamSource in ) {
if( in.getReader()!=null )
return new XMLInputSource(
in.getPublicId(), in.getSystemId(), in.getSystemId(),
in.getReader(), null );
if( in.getInputStream()!=null )
return new XMLInputSource(
in.getPublicId(), in.getSystemId(), in.getSystemId(),
in.getInputStream(), null );
return new XMLInputSource(
in.getPublicId(), in.getSystemId(), in.getSystemId(), false );
}
@Override
protected Object unmarshalStreamSource(StreamSource streamSource) throws XmlMappingException, IOException {
if (streamSource.getInputStream() != null) {
return unmarshalInputStream(streamSource.getInputStream());
}
else if (streamSource.getReader() != null) {
return unmarshalReader(streamSource.getReader());
}
else {
throw new IllegalArgumentException("StreamSource contains neither InputStream nor Reader");
}
}
/**
* Creates a proper {@link XMLInputSource} from a {@link StreamSource}.
*
* @return always return non-null valid object.
*/
public static final XMLInputSource toXMLInputSource( StreamSource in ) {
if( in.getReader()!=null )
return new XMLInputSource(
in.getPublicId(), in.getSystemId(), in.getSystemId(),
in.getReader(), null );
if( in.getInputStream()!=null )
return new XMLInputSource(
in.getPublicId(), in.getSystemId(), in.getSystemId(),
in.getInputStream(), null );
return new XMLInputSource(
in.getPublicId(), in.getSystemId(), in.getSystemId() );
}
public Source getContent() throws SOAPException {
if (source != null) {
InputStream bis = null;
if (source instanceof JAXMStreamSource) {
StreamSource streamSource = (StreamSource)source;
bis = streamSource.getInputStream();
} else if (FastInfosetReflection.isFastInfosetSource(source)) {
// FastInfosetSource inherits from SAXSource
SAXSource saxSource = (SAXSource)source;
bis = saxSource.getInputSource().getByteStream();
}
if (bis != null) {
try {
bis.reset();
} catch (IOException e) {
/* This exception will never be thrown.
*
* The setContent method will modify the source
* if StreamSource to JAXMStreamSource, that uses
* a ByteInputStream, and for a FastInfosetSource will
* replace the InputStream with a ByteInputStream.
*/
}
}
return source;
}
return ((Envelope) getEnvelope()).getContent();
}
/**
* Returns the input stream or reader set in the given source, or {@code null} if none.
*/
private static Closeable input(final StreamSource source) {
Closeable in = null;
if (source != null) {
in = source.getInputStream();
if (in == null) {
in = source.getReader();
}
}
return in;
}
public Source getContent() throws SOAPException {
if (source != null) {
InputStream bis = null;
if (source instanceof JAXMStreamSource) {
StreamSource streamSource = (StreamSource)source;
bis = streamSource.getInputStream();
} else if (FastInfosetReflection.isFastInfosetSource(source)) {
// FastInfosetSource inherits from SAXSource
SAXSource saxSource = (SAXSource)source;
bis = saxSource.getInputSource().getByteStream();
}
if (bis != null) {
try {
bis.reset();
} catch (IOException e) {
/* This exception will never be thrown.
*
* The setContent method will modify the source
* if StreamSource to JAXMStreamSource, that uses
* a ByteInputStream, and for a FastInfosetSource will
* replace the InputStream with a ByteInputStream.
*/
}
}
return source;
}
return ((Envelope) getEnvelope()).getContent();
}
@Nullable
protected NodeAndBaseURI getAsNode (@Nonnull final IHasInputStream aXMLResource) throws Exception
{
final StreamSource aStreamSrc = TransformSourceFactory.create (aXMLResource);
InputStream aIS = null;
try
{
aIS = aStreamSrc.getInputStream ();
}
catch (final IllegalStateException ex)
{
// Fall through
// Happens e.g. for ResourceStreamSource with non-existing resources
}
if (aIS == null)
{
// Resource not found
LOGGER.warn ("XML resource " + aXMLResource + " does not exist!");
return null;
}
final Document aDoc = DOMReader.readXMLDOM (aIS, internalCreateDOMReaderSettings ());
if (aDoc == null)
throw new IllegalArgumentException ("Failed to read resource " + aXMLResource + " as XML");
LOGGER.info ("Read XML resource " + aXMLResource);
return new NodeAndBaseURI (aDoc, aStreamSrc.getSystemId ());
}
public static XMLStreamReader createSourceReader(Source source, boolean rejectDTDs, String charsetName) {
try {
if (source instanceof StreamSource) {
StreamSource streamSource = (StreamSource) source;
InputStream is = streamSource.getInputStream();
if (is != null) {
// Wrap input stream in Reader if charset is specified
if (charsetName != null) {
return XMLStreamReaderFactory.create(
source.getSystemId(), new InputStreamReader(is, charsetName), rejectDTDs);
}
else {
return XMLStreamReaderFactory.create(
source.getSystemId(), is, rejectDTDs);
}
}
else {
Reader reader = streamSource.getReader();
if (reader != null) {
return XMLStreamReaderFactory.create(
source.getSystemId(), reader, rejectDTDs);
}
else {
return XMLStreamReaderFactory.create(
source.getSystemId(), new URL(source.getSystemId()).openStream(), rejectDTDs );
}
}
}
else if (source.getClass() == fastInfosetSourceClass) {
return FastInfosetUtil.createFIStreamReader((InputStream)
fastInfosetSource_getInputStream.invoke(source));
}
else if (source instanceof DOMSource) {
DOMStreamReader dsr = new DOMStreamReader();
dsr.setCurrentNode(((DOMSource) source).getNode());
return dsr;
}
else if (source instanceof SAXSource) {
// TODO: need SAX to StAX adapter here -- Use transformer for now
Transformer tx = XmlUtil.newTransformer();
DOMResult domResult = new DOMResult();
tx.transform(source, domResult);
return createSourceReader(
new DOMSource(domResult.getNode()),
rejectDTDs);
}
else {
throw new XMLReaderException("sourceReader.invalidSource",
source.getClass().getName());
}
}
catch (Exception e) {
throw new XMLReaderException(e);
}
}
public static XMLStreamReader createSourceReader(Source source, boolean rejectDTDs, String charsetName) {
try {
if (source instanceof StreamSource) {
StreamSource streamSource = (StreamSource) source;
InputStream is = streamSource.getInputStream();
if (is != null) {
// Wrap input stream in Reader if charset is specified
if (charsetName != null) {
return XMLStreamReaderFactory.create(
source.getSystemId(), new InputStreamReader(is, charsetName), rejectDTDs);
}
else {
return XMLStreamReaderFactory.create(
source.getSystemId(), is, rejectDTDs);
}
}
else {
Reader reader = streamSource.getReader();
if (reader != null) {
return XMLStreamReaderFactory.create(
source.getSystemId(), reader, rejectDTDs);
}
else {
return XMLStreamReaderFactory.create(
source.getSystemId(), new URL(source.getSystemId()).openStream(), rejectDTDs );
}
}
}
else if (source.getClass() == fastInfosetSourceClass) {
return FastInfosetUtil.createFIStreamReader((InputStream)
fastInfosetSource_getInputStream.invoke(source));
}
else if (source instanceof DOMSource) {
DOMStreamReader dsr = new DOMStreamReader();
dsr.setCurrentNode(((DOMSource) source).getNode());
return dsr;
}
else if (source instanceof SAXSource) {
// TODO: need SAX to StAX adapter here -- Use transformer for now
Transformer tx = XmlUtil.newTransformer();
DOMResult domResult = new DOMResult();
tx.transform(source, domResult);
return createSourceReader(
new DOMSource(domResult.getNode()),
rejectDTDs);
}
else {
throw new XMLReaderException("sourceReader.invalidSource",
source.getClass().getName());
}
}
catch (Exception e) {
throw new XMLReaderException(e);
}
}
private InputStream getInputStreamFromSource(StreamSource s)
throws TransformerException {
InputStream stream = s.getInputStream();
if (stream != null)
return stream;
if (s.getReader() != null)
return null;
String systemId = s.getSystemId();
if (systemId != null) {
try {
String fileURL = systemId;
if (systemId.startsWith("file:///"))
{
/*
systemId is:
file:///<drive>:/some/path/file.xml
or
file:///some/path/file.xml
*/
String absolutePath = systemId.substring(7);
/*
/<drive>:/some/path/file.xml
or
/some/path/file.xml
*/
boolean hasDriveDesignator = absolutePath.indexOf(":") > 0;
if (hasDriveDesignator) {
String driveDesignatedPath = absolutePath.substring(1);
/*
<drive>:/some/path/file.xml */
fileURL = driveDesignatedPath;
}
else {
/*
/some/path/file.xml */
fileURL = absolutePath;
}
}
//return new FileInputStream(fileURL);
try {
return new FileInputStream(new File(new URI(fileURL)));
} catch (URISyntaxException ex) {
throw new TransformerException(ex);
}
} catch (IOException e) {
throw new TransformerException(e.toString());
}
}
throw new TransformerException("Unexpected StreamSource object");
}
private InputStream getInputStreamFromSource(StreamSource s)
throws TransformerException {
InputStream stream = s.getInputStream();
if (stream != null)
return stream;
if (s.getReader() != null)
return null;
String systemId = s.getSystemId();
if (systemId != null) {
try {
String fileURL = systemId;
if (systemId.startsWith("file:///"))
{
/*
systemId is:
file:///<drive>:/some/path/file.xml
or
file:///some/path/file.xml
*/
String absolutePath = systemId.substring(7);
/*
/<drive>:/some/path/file.xml
or
/some/path/file.xml
*/
boolean hasDriveDesignator = absolutePath.indexOf(":") > 0;
if (hasDriveDesignator) {
String driveDesignatedPath = absolutePath.substring(1);
/*
<drive>:/some/path/file.xml */
fileURL = driveDesignatedPath;
}
else {
/*
/some/path/file.xml */
fileURL = absolutePath;
}
}
//return new FileInputStream(fileURL);
try {
return new FileInputStream(new File(new URI(fileURL)));
} catch (URISyntaxException ex) {
throw new TransformerException(ex);
}
} catch (IOException e) {
throw new TransformerException(e.toString());
}
}
throw new TransformerException("Unexpected StreamSource object");
}