我有一个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循环一样,我可以迭代现有的子标签。
答案 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