Example which wraps the Jasper reports design object tree to xml.
Example xml document which can be parsed.
<?xml version="1.0" encoding="UTF-8"?>
<report>
<!--
Format is made JR compatible for easy copy/paste except;
- style tags need el.id for reference in docs and dynamic report elements.
- can use multiple reports in one xml
- not all JR tags are supported only the ones needed for ~this report see jr4o-lang.eld file.
-->
<jasperReport name="generic-landscape" columnCount="1" pageWidth="842" pageHeight="595" columnWidth="800" leftMargin="20" rightMargin="20" topMargin="30" bottomMargin="30" orientation="LANDSCAPE">
<style el.id="Arial_Normal" name="Arial_Normal" isDefault="true" fontName="Arial" size="10" isBold="false" isItalic="false" isUnderline="false" isStrikeThrough="false" pdfFontName="Helvetica" pdfEncoding="Cp1252" isPdfEmbedded="false" />
<style el.id="Arial_Bold" name="Arial_Bold" isDefault="false" fontName="Arial" size="10" isBold="true" isItalic="false" isUnderline="false" isStrikeThrough="false" pdfFontName="Helvetica-Bold" pdfEncoding="Cp1252" isPdfEmbedded="false" />
<style el.id="Arial_Italic" name="Arial_Italic" isDefault="false" fontName="Arial" size="10" isBold="false" isItalic="true" isUnderline="false" isStrikeThrough="false" pdfFontName="Helvetica-Oblique" pdfEncoding="Cp1252" isPdfEmbedded="false" />
<style el.id="Arial_Header" name="Arial_Header" isDefault="false" fontName="Arial" size="8" isBold="true" isItalic="false" isUnderline="false" isStrikeThrough="false" pdfFontName="Helvetica-Bold" pdfEncoding="Cp1252" isPdfEmbedded="false"/>
<title tagType="title" height="60">
<line x="0" y="0" width="800" height="1"/>
<textField isBlankWhenNull="true" x="40" y="10" width="276" height="30" style="${Arial_Normal}" fontSize="18">
<textFieldExpression valueClass="java.lang.String"><![CDATA[$P{title}]]></textFieldExpression>
</textField>
<textField isBlankWhenNull="true" x="40" y="30" width="200" height="30" style="${Arial_Normal}">
<textFieldExpression valueClass="java.lang.String"><![CDATA[$P{description}]]></textFieldExpression>
</textField>
<textField isBlankWhenNull="true" x="350" y="30" width="150" height="16" style="${Arial_Normal}">
<textFieldExpression valueClass="java.lang.String"><![CDATA[$P{titleSubject}]]></textFieldExpression>
</textField>
</title>
<columnHeader tagType="columnHeader" height="20">
<dynamicColumnHeader/>
</columnHeader>
<detail tagType="detail" height="20">
<line x="0" y="0" width="800" height="1"/>
<dynamicColumn/>
</detail>
<pageFooter tagType="pageFooter" height="40">
<line x="0" y="10" width="800" height="1"/>
<textField isBlankWhenNull="true" x="20" y="20" width="150" height="16" style="${Arial_Normal}">
<textFieldExpression valueClass="java.lang.String"><![CDATA[$P{titleSubject}]]></textFieldExpression>
</textField>
<textField x="200" y="20" width="80" height="15" horizontalAlignment="RIGHT">
<textFieldExpression valueClass="java.lang.String"><![CDATA[$R{report.footer.page}+" "+String.valueOf($V{PAGE_NUMBER})+" "]]></textFieldExpression>
</textField>
<textField x="280" y="20" width="100" height="15" evaluationTime="REPORT">
<textFieldExpression valueClass="java.lang.String"><![CDATA[$R{report.footer.pageOf}+String.valueOf($V{PAGE_NUMBER})+" "+$R{report.footer.printed}]]></textFieldExpression>
</textField>
<textField x="370" y="20" width="150" height="15" pattern="dd-MM-yyyy - HH:mm:ss">
<textFieldExpression valueClass="java.util.Date"><![CDATA[new Date()]]></textFieldExpression>
</textField>
<textField isBlankWhenNull="true" x="650" y="20" width="150" height="16" style="${Arial_Normal}">
<textFieldExpression valueClass="java.lang.String"><![CDATA[$P{title}]]></textFieldExpression>
</textField>
</pageFooter>
<summary tagType="summary" height="35">
</summary>
</jasperReport>
<jasperReport name="generic-portrait" columnCount="1" pageWidth="595" pageHeight="842" columnWidth="554" leftMargin="20" rightMargin="20" topMargin="30" bottomMargin="30" orientation="LANDSCAPE">
<style el.id="Arial_Normal" name="Arial_Normal" isDefault="true" fontName="Arial" size="10" isBold="false" isItalic="false" isUnderline="false" isStrikeThrough="false" pdfFontName="Helvetica" pdfEncoding="Cp1252" isPdfEmbedded="false" />
<style el.id="Arial_Bold" name="Arial_Bold" isDefault="false" fontName="Arial" size="10" isBold="true" isItalic="false" isUnderline="false" isStrikeThrough="false" pdfFontName="Helvetica-Bold" pdfEncoding="Cp1252" isPdfEmbedded="false" />
<style el.id="Arial_Italic" name="Arial_Italic" isDefault="false" fontName="Arial" size="10" isBold="false" isItalic="true" isUnderline="false" isStrikeThrough="false" pdfFontName="Helvetica-Oblique" pdfEncoding="Cp1252" isPdfEmbedded="false" />
<style el.id="Arial_Header" name="Arial_Header" isDefault="false" fontName="Arial" size="8" isBold="true" isItalic="false" isUnderline="false" isStrikeThrough="false" pdfFontName="Helvetica-Bold" pdfEncoding="Cp1252" isPdfEmbedded="false"/>
<title tagType="title" height="60">
<line x="0" y="0" width="800" height="1"/>
<textField isBlankWhenNull="true" x="40" y="10" width="276" height="30" style="${Arial_Normal}" fontSize="18">
<textFieldExpression valueClass="java.lang.String"><![CDATA[$P{title}]]></textFieldExpression>
</textField>
<textField isBlankWhenNull="true" x="40" y="30" width="200" height="30" style="${Arial_Normal}">
<textFieldExpression valueClass="java.lang.String"><![CDATA[$P{description}]]></textFieldExpression>
</textField>
<textField isBlankWhenNull="true" x="350" y="30" width="150" height="16" style="${Arial_Normal}">
<textFieldExpression valueClass="java.lang.String"><![CDATA[$P{titleSubject}]]></textFieldExpression>
</textField>
</title>
<columnHeader tagType="columnHeader" height="20">
<dynamicColumnHeader/>
</columnHeader>
<detail tagType="detail" height="20">
<line x="0" y="0" width="800" height="1"/>
<dynamicColumn/>
</detail>
<pageFooter tagType="pageFooter" height="40">
<line x="0" y="10" width="800" height="1"/>
<textField isBlankWhenNull="true" x="20" y="20" width="150" height="16" style="${Arial_Normal}">
<textFieldExpression valueClass="java.lang.String"><![CDATA[$P{titleSubject}]]></textFieldExpression>
</textField>
<textField x="200" y="20" width="80" height="15" horizontalAlignment="RIGHT">
<textFieldExpression valueClass="java.lang.String"><![CDATA[$R{report.footer.page}+" "+String.valueOf($V{PAGE_NUMBER})+" "]]></textFieldExpression>
</textField>
<textField x="280" y="20" width="100" height="15" evaluationTime="REPORT">
<textFieldExpression valueClass="java.lang.String"><![CDATA[$R{report.footer.pageOf}+String.valueOf($V{PAGE_NUMBER})+" "+$R{report.footer.printed}]]></textFieldExpression>
</textField>
<textField x="370" y="20" width="150" height="15" pattern="dd-MM-yyyy - HH:mm:ss">
<textFieldExpression valueClass="java.util.Date"><![CDATA[new Date()]]></textFieldExpression>
</textField>
<textField isBlankWhenNull="true" x="650" y="20" width="150" height="16" style="${Arial_Normal}">
<textFieldExpression valueClass="java.lang.String"><![CDATA[$P{title}]]></textFieldExpression>
</textField>
</pageFooter>
<summary tagType="summary" height="35">
</summary>
</jasperReport>
</report>