public class TraxSource
extends javax.xml.transform.sax.SAXSource
JAXP TrAX Source
that enables using XStream object serialization as
direct input for XSLT processors without resorting to an intermediate representation such as
text XML, DOM or DOM4J.
The following example shows how to apply an XSL Transformation
to a set of Java objects gathered into a List (source
):
public static String transform(List source, String stylesheet) {
try {
Transformer transformer = TransformerFactory.newInstance().newTransformer(
new StreamSource(stylesheet));
TraxSource in = new TraxSource(source);
Writer out = new StringWriter();
transformer.transform(in, new StreamResult(out));
return out.toString();
} catch (TransformerException e) {
throw new RuntimeException("XSLT Transformation failed", e);
}
}
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
XSTREAM_FEATURE
If
TransformerFactory.getFeature(java.lang.String) returns true
when passed this value as an argument, the Transformer natively supports XStream. |
Constructor and Description |
---|
TraxSource()
Creates a XStream TrAX source.
|
TraxSource(java.util.List source)
Creates a XStream TrAX source, setting the objects to marshal.
|
TraxSource(java.util.List source,
XStream xstream)
Creates a XStream TrAX source, setting the objects to marshal and a configured (with
aliases) XStream facade.
|
TraxSource(java.lang.Object source)
Creates a XStream TrAX source, specifying the object to marshal.
|
TraxSource(java.lang.Object source,
XStream xstream)
Creates a XStream TrAX source, specifying the object to marshal and a configured (with
aliases) XStream facade.
|
Modifier and Type | Method and Description |
---|---|
org.xml.sax.XMLReader |
getXMLReader()
Returns the XMLReader to be used for the Source.
|
void |
setInputSource(org.xml.sax.InputSource inputSource)
Sets the SAX InputSource to be used for the Source.
|
void |
setSource(java.lang.Object obj)
Sets the object to marshal.
|
void |
setSourceAsList(java.util.List list)
Sets the list of objects to marshal.
|
void |
setXMLReader(org.xml.sax.XMLReader reader)
Set the XMLReader to be used for the Source.
|
void |
setXStream(XStream xstream)
Sets the XStream facade to use when marshalling objects.
|
public static final java.lang.String XSTREAM_FEATURE
TransformerFactory.getFeature(java.lang.String)
returns true
when passed this value as an argument, the Transformer natively supports XStream.
Note: This implementation does not override the
SAXSource.FEATURE
value defined by its superclass to be considered as a SAXSource
by Transformer implementations not natively supporting this XStream-specific source
public TraxSource()
public TraxSource(java.lang.Object source)
source
- the object to marshal.java.lang.IllegalArgumentException
- if source
is null
.setSource(java.lang.Object)
public TraxSource(java.lang.Object source, XStream xstream)
source
- the object to marshal.xstream
- a configured XStream facade.java.lang.IllegalArgumentException
- if source
or xstream
is
null
.setSource(java.lang.Object)
,
setXStream(com.thoughtworks.xstream.XStream)
public TraxSource(java.util.List source)
source
- the list of objects to marshal.java.lang.IllegalArgumentException
- if source
is null
or
empty.setSourceAsList(java.util.List)
public TraxSource(java.util.List source, XStream xstream)
source
- the list of objects to marshal.xstream
- a configured XStream facade.java.lang.IllegalArgumentException
- if source
or xstream
is
null
or source
is empty.setSourceAsList(java.util.List)
,
setXStream(com.thoughtworks.xstream.XStream)
public void setInputSource(org.xml.sax.InputSource inputSource)
As this implementation only
supports object lists as data source, this method always throws an
UnsupportedOperationException
.
setInputSource
in class javax.xml.transform.sax.SAXSource
inputSource
- a valid InputSource reference.java.lang.UnsupportedOperationException
- always!public void setXMLReader(org.xml.sax.XMLReader reader)
As this implementation only supports
object lists as data source, this method throws an UnsupportedOperationException
if the provided reader object does not implement the SAX XMLFilter
interface.
Otherwise, a SaxWriter
instance will be attached as parent of the filter chain.
setXMLReader
in class javax.xml.transform.sax.SAXSource
reader
- a valid XMLReader or XMLFilter reference.java.lang.UnsupportedOperationException
- if reader
is not a SAX
XMLFilter
.getXMLReader()
public org.xml.sax.XMLReader getXMLReader()
This implementation returns a
specific XMLReader (SaxWriter
) generating the XML from a list of input objects.
getXMLReader
in class javax.xml.transform.sax.SAXSource
public void setXStream(XStream xstream)
xstream
- a configured XStream facade.java.lang.IllegalArgumentException
- if xstream
is null
.public void setSource(java.lang.Object obj)
obj
- the object to marshal.java.lang.IllegalArgumentException
- if source
is null
.public void setSourceAsList(java.util.List list)
When dealing with non-text input (such as SAX or DOM), XSLT processors support multiple root node children for the source tree (see section 3.1 of the "XSL Transformations (XSLT) Version 1.0" specification. Using a list of objects as source makes use of this feature and allows creating XML documents merging the XML serialization of several Java objects.
list
- the list of objects to marshal.java.lang.IllegalArgumentException
- if source
is null
or
empty.Copyright © 2004–2022 XStream. All rights reserved.