public class JRXmlDataSource extends JRAbstractTextDataSource implements JRRewindableDataSource
The data source is constructed around a node set (record set) selected by an XPath expression from the xml document.
Each field can provide an additional XPath expresion that will be used to select its value. This expression must be specified using the "fieldDescription" element of the field. The expression is evaluated in the context of the current node thus the expression should be relative to the current node.
To support subreports, sub data sources can be created. There are two different methods for creating sub data sources. The first one allows to create a sub data source rooted at the current node. The current node can be seen as a new document around which the sub data source is created. The second method allows to create a sub data source that is rooted at the same document that is used by the data source but uses a different XPath select expression.
Example:
<A> <B id="0"> <C> <C> </B> <B id="1"> <C> <C> </B> <D id="3"> <E> <E> </D> </A>
Data source creation
Generally the full power of XPath expression is available. As an example, "/A/B[@id > 0"] will select all the nodes of type /A/B having the id greater than 0. You'll find a short XPath tutorial here.
Note on performance. Due to the fact that all the XPath expression are interpreted the data source performance is not great. For the cases where more speed is required, consider implementing a custom data source that directly accesses the Document through the DOM API.
JRXPathExecuterUtils
EXCEPTION_MESSAGE_KEY_CANNOT_CONVERT_FIELD_TYPE, EXCEPTION_MESSAGE_KEY_CANNOT_MODIFY_PROPERTIES_AFTER_START, EXCEPTION_MESSAGE_KEY_NODE_NOT_AVAILABLE, EXCEPTION_MESSAGE_KEY_NULL_DOCUMENT, EXCEPTION_MESSAGE_KEY_NULL_SELECT_EXPRESSION, EXCEPTION_MESSAGE_KEY_UNKNOWN_COLUMN_NAME, EXCEPTION_MESSAGE_KEY_UNKNOWN_NUMBER_TYPE
Constructor and Description |
---|
JRXmlDataSource(org.w3c.dom.Document document) |
JRXmlDataSource(org.w3c.dom.Document document,
java.lang.String selectExpression) |
JRXmlDataSource(java.io.File file) |
JRXmlDataSource(java.io.File file,
boolean isNamespaceAware) |
JRXmlDataSource(java.io.File file,
java.lang.String selectExpression) |
JRXmlDataSource(java.io.File file,
java.lang.String selectExpression,
boolean isNamespaceAware) |
JRXmlDataSource(java.io.InputStream in) |
JRXmlDataSource(java.io.InputStream in,
boolean isNamespaceAware) |
JRXmlDataSource(java.io.InputStream in,
java.lang.String selectExpression) |
JRXmlDataSource(java.io.InputStream in,
java.lang.String selectExpression,
boolean isNamespaceAware) |
JRXmlDataSource(JasperReportsContext jasperReportsContext,
org.w3c.dom.Document document)
Creates the data source by parsing the xml document from the given file.
|
JRXmlDataSource(JasperReportsContext jasperReportsContext,
org.w3c.dom.Document document,
java.lang.String selectExpression)
Creates the data source by parsing the xml document from the given file.
|
JRXmlDataSource(JasperReportsContext jasperReportsContext,
java.io.File file)
Creates the data source by parsing the xml document from the given file.
|
JRXmlDataSource(JasperReportsContext jasperReportsContext,
java.io.File file,
boolean isNamespaceAware) |
JRXmlDataSource(JasperReportsContext jasperReportsContext,
java.io.File file,
java.lang.String selectExpression)
Creates the data source by parsing the xml document from the given file.
|
JRXmlDataSource(JasperReportsContext jasperReportsContext,
java.io.File file,
java.lang.String selectExpression,
boolean isNamespaceAware) |
JRXmlDataSource(JasperReportsContext jasperReportsContext,
java.io.InputStream in)
Creates the data source by parsing the xml document from the given input stream.
|
JRXmlDataSource(JasperReportsContext jasperReportsContext,
java.io.InputStream in,
boolean isNamespaceAware) |
JRXmlDataSource(JasperReportsContext jasperReportsContext,
java.io.InputStream in,
java.lang.String selectExpression)
Creates the data source by parsing the xml document from the given input stream.
|
JRXmlDataSource(JasperReportsContext jasperReportsContext,
java.io.InputStream in,
java.lang.String selectExpression,
boolean isNamespaceAware) |
JRXmlDataSource(JasperReportsContext jasperReportsContext,
java.lang.String uri)
Creates the data source by parsing the xml document from the given system identifier (URI).
|
JRXmlDataSource(JasperReportsContext jasperReportsContext,
java.lang.String uri,
boolean isNamespaceAware) |
JRXmlDataSource(JasperReportsContext jasperReportsContext,
java.lang.String uri,
java.lang.String selectExpression)
Creates the data source by parsing the xml document from the given system identifier (URI).
|
JRXmlDataSource(JasperReportsContext jasperReportsContext,
java.lang.String uri,
java.lang.String selectExpression,
boolean isNamespaceAware) |
JRXmlDataSource(java.lang.String uri) |
JRXmlDataSource(java.lang.String uri,
boolean isNamespaceAware) |
JRXmlDataSource(java.lang.String uri,
java.lang.String selectExpression) |
JRXmlDataSource(java.lang.String uri,
java.lang.String selectExpression,
boolean isNamespaceAware) |
Modifier and Type | Method and Description |
---|---|
void |
close()
Closes the reader.
|
JRXmlDataSource |
dataSource()
Creates a sub data source using as root document the document used by "this" data source.
|
JRXmlDataSource |
dataSource(java.lang.String selectExpr)
Creates a sub data source using as root document the document used by "this" data source.
|
java.lang.Object |
getFieldValue(JRField jrField)
Gets the field value for the current position.
|
java.lang.String |
getText(org.w3c.dom.Node node)
Return the text that a node contains.
|
void |
moveFirst()
Moves back to the first element in the data source.
|
boolean |
next()
Tries to position the cursor on the next element in the data source.
|
JRXmlDataSource |
subDataSource()
Creates a sub data source using the current node (record) as the root
of the document.
|
JRXmlDataSource |
subDataSource(java.lang.String selectExpr)
Creates a sub data source using the current node (record) as the root
of the document.
|
org.w3c.dom.Document |
subDocument()
Creates a document using the current node as root.
|
convertNumber, convertStringValue, getConvertBean, getDatePattern, getFormattedDate, getFormattedNumber, getLocale, getNumberPattern, getTextAttributes, getTimeZone, setDatePattern, setLocale, setLocale, setNumberPattern, setTextAttributes, setTextAttributes, setTimeZone, setTimeZone
public JRXmlDataSource(JasperReportsContext jasperReportsContext, org.w3c.dom.Document document) throws JRException
document
- the documentJRException
- if the data source cannot be createdpublic JRXmlDataSource(org.w3c.dom.Document document) throws JRException
JRException
JRXmlDataSource(JasperReportsContext, Document)
public JRXmlDataSource(JasperReportsContext jasperReportsContext, org.w3c.dom.Document document, java.lang.String selectExpression) throws JRException
document
- the documentselectExpression
- the XPath select expressionJRException
- if the data source cannot be createdpublic JRXmlDataSource(org.w3c.dom.Document document, java.lang.String selectExpression) throws JRException
JRException
JRXmlDataSource(JasperReportsContext, Document, String)
public JRXmlDataSource(JasperReportsContext jasperReportsContext, java.io.InputStream in) throws JRException
in
- the input streamJRException
JRXmlDataSource(Document)
public JRXmlDataSource(JasperReportsContext jasperReportsContext, java.io.InputStream in, boolean isNamespaceAware) throws JRException
JRException
public JRXmlDataSource(java.io.InputStream in) throws JRException
JRException
JRXmlDataSource(JasperReportsContext, InputStream)
public JRXmlDataSource(java.io.InputStream in, boolean isNamespaceAware) throws JRException
JRException
public JRXmlDataSource(JasperReportsContext jasperReportsContext, java.io.InputStream in, java.lang.String selectExpression) throws JRException
JRException
JRXmlDataSource(InputStream)
,
JRXmlDataSource(Document, String)
public JRXmlDataSource(JasperReportsContext jasperReportsContext, java.io.InputStream in, java.lang.String selectExpression, boolean isNamespaceAware) throws JRException
JRException
public JRXmlDataSource(java.io.InputStream in, java.lang.String selectExpression) throws JRException
public JRXmlDataSource(java.io.InputStream in, java.lang.String selectExpression, boolean isNamespaceAware) throws JRException
JRException
public JRXmlDataSource(JasperReportsContext jasperReportsContext, java.lang.String uri) throws JRException
If the system identifier is a URL, it must be full resolved.
uri
- the system identifierJRException
JRXmlDataSource(Document)
public JRXmlDataSource(JasperReportsContext jasperReportsContext, java.lang.String uri, boolean isNamespaceAware) throws JRException
JRException
public JRXmlDataSource(java.lang.String uri) throws JRException
JRException
JRXmlDataSource(JasperReportsContext, String)
public JRXmlDataSource(java.lang.String uri, boolean isNamespaceAware) throws JRException
JRException
public JRXmlDataSource(JasperReportsContext jasperReportsContext, java.lang.String uri, java.lang.String selectExpression) throws JRException
JRException
JRXmlDataSource(String)
,
JRXmlDataSource(Document, String)
public JRXmlDataSource(JasperReportsContext jasperReportsContext, java.lang.String uri, java.lang.String selectExpression, boolean isNamespaceAware) throws JRException
JRException
public JRXmlDataSource(java.lang.String uri, java.lang.String selectExpression) throws JRException
JRException
JRXmlDataSource(JasperReportsContext, String, String)
public JRXmlDataSource(java.lang.String uri, java.lang.String selectExpression, boolean isNamespaceAware) throws JRException
JRException
public JRXmlDataSource(JasperReportsContext jasperReportsContext, java.io.File file) throws JRException
file
- the fileJRException
JRXmlDataSource(Document)
public JRXmlDataSource(JasperReportsContext jasperReportsContext, java.io.File file, boolean isNamespaceAware) throws JRException
JRException
public JRXmlDataSource(java.io.File file) throws JRException
JRException
JRXmlDataSource(JasperReportsContext, File)
public JRXmlDataSource(java.io.File file, boolean isNamespaceAware) throws JRException
JRException
public JRXmlDataSource(JasperReportsContext jasperReportsContext, java.io.File file, java.lang.String selectExpression) throws JRException
JRException
JRXmlDataSource(File)
,
JRXmlDataSource(Document, String)
public JRXmlDataSource(JasperReportsContext jasperReportsContext, java.io.File file, java.lang.String selectExpression, boolean isNamespaceAware) throws JRException
JRException
public JRXmlDataSource(java.io.File file, java.lang.String selectExpression) throws JRException
JRException
JRXmlDataSource(JasperReportsContext, File, String)
public JRXmlDataSource(java.io.File file, java.lang.String selectExpression, boolean isNamespaceAware) throws JRException
JRException
public void moveFirst() throws JRException
JRRewindableDataSource
moveFirst
in interface JRRewindableDataSource
JRException
public boolean next()
JRDataSource
next
in interface JRDataSource
public java.lang.Object getFieldValue(JRField jrField) throws JRException
JRDataSource
getFieldValue
in interface JRDataSource
JRException
public JRXmlDataSource subDataSource(java.lang.String selectExpr) throws JRException
selectExpr
- the XPath select expressionJRException
- if the sub data source couldn't be createdJRXmlDataSource(Document, String)
public JRXmlDataSource subDataSource() throws JRException
JRException
- if the data source cannot be createdsubDataSource(String)
,
JRXmlDataSource(Document)
public org.w3c.dom.Document subDocument() throws JRException
JRException
public JRXmlDataSource dataSource(java.lang.String selectExpr) throws JRException
selectExpr
- the XPath select expressionJRException
- if the sub data source couldn't be createdJRXmlDataSource(Document, String)
public JRXmlDataSource dataSource() throws JRException
JRException
- if the data source cannot be createddataSource(String)
,
JRXmlDataSource(Document)
public java.lang.String getText(org.w3c.dom.Node node)
node
- a DOM nodepublic void close()
© 2001-2014 TIBCO Software Inc. www.jaspersoft.com