JasperReports中的嵌套标签

时间:2015-06-24 14:34:08

标签: jasper-reports

我有一个XML文件,如下所示:

<?xml version="1.0" encoding="utf-8"?><template>
<Kinder>
<vorname>Kevin</vorname>
<zuname>Müller</zuname>
<geburtsdatum>21.01.2010</geburtsdatum>
<Kontakt>
<typ>Vater</typ>
<vorname>Peter</vorname>
<zuname>Müller</zuname> 
</Kontakt>
<Kontakt>
<typ>Mutter</typ>
<vorname>Petra</vorname>
<zuname>Müller</zuname> 
</Kontakt>
</Kinder>
<Kinder>
<vorname>Schakkeline</vorname>
<zuname>Meyer</zuname>
<geburtsdatum>21.03.2011</geburtsdatum>
<Kontakt>
<typ>Mutter</typ>
<vorname>Maria</vorname>
<zuname>Meyer</zuname>  
</Kontakt>
</Kinder>
</template>

我想以保留结构的方式打印它,如下所示:

Kevin Müller 21.01.2010
  Peter Müller
  Petra Müller
Schakkeline Meyer 21.03.2011
  Maria Meyer

我得到的主线:

 <queryString language="xPath">
    <![CDATA[/template/Kinder]]>
</queryString>
<field name="zuname" class="java.lang.String">
    <fieldDescription><![CDATA[zuname]]></fieldDescription>
</field>
<field name="vorname" class="java.lang.String">
    <fieldDescription><![CDATA[vorname]]></fieldDescription>
</field>

...

<band height="102" splitType="Stretch">
                <textField>
                    <reportElement x="32" y="34" width="136" height="16" uuid="403ac891-da84-444e-a7f1-33aef84483fa"/>
                    <textFieldExpression><![CDATA[$F{vorname}]]></textFieldExpression>
                </textField>
                <textField>
                    <reportElement x="32" y="14" width="100" height="20" uuid="670d9156-6282-4b53-9268-275457f07ce0"/>
                    <textFieldExpression><![CDATA[$F{zuname}]]></textFieldExpression>
                </textField>
                <textField>
                    <reportElement x="179" y="14" width="100" height="20" uuid="b7356c70-e27c-48a7-be46-e39400da4c1f"/>
                    <textFieldExpression><![CDATA[$F{geburtsdatum}]]></textFieldExpression>
                </textField>

但是如何访问嵌套标签,如

<Kontakt>
<typ>Vater</typ>
<vorname>Peter</vorname>
<zuname>Müller</zuname> 
</Kontakt>

我的意思是像for循环一样,我可以迭代现有的子标签。

1 个答案:

答案 0 :(得分:1)

您可以将子报表与数据源查询一起使用,例如“// Kontakt”

   <dataSourceExpression><![CDATA[
   ((net.sf.jasperreports.engine.data.JRXmlDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("//Kontakt")
    ]]></dataSourceExpression>

示例community.jaspersoft.com/questions/524978/empty-subreport-xml-datasource-ireport