Как создать подотчеты с использованием источников данных XML в JasperReports? - PullRequest
4 голосов
/ 26 января 2009

Я использую iReport , и мне нужно создать подотчет с использованием XML DataSource .

У меня будет только один XML для отчета о дыре. Примерно так:

<question>
  <text>What do you think about SO?</text>
  <options>
    <option>Like it</option>
    <option>Really like it</option>
    <option>Love it</option>
  </options>
</question>

Основной отчет будет детально связан с вопросами, у каждого вопроса будет много вариантов. Каждый подотчет должен быть связан с опциями для вопроса ... Ну мастер-деталь.

Все, что я мог найти с помощью поиска в Google, это использовать SQL , я хочу использовать XPath .

Ответы [ 2 ]

2 голосов
/ 26 января 2009

Взгляните на JRXmlDataSource JavaDoc . Есть пример, который показывает, как это делается.

0 голосов
/ 26 мая 2011

Сначала создайте свой подотчет в виде отчета, используя xpath. Затем создайте элемент вложенного отчета в родительском отчете и свяжите вложенный отчет с родительским отчетом. ниже приведен пример элемента подотчета:

<subreport>
    <reportElement x="0" y="20" width="555" height="100"/>
    <subreportParameter name="XML_DATE_PATTERN">
        <subreportParameterExpression><![CDATA[$P{XML_DATE_PATTERN}]]></subreportParameterExpression>
    </subreportParameter>
    <subreportParameter name="XML_DATA_DOCUMENT">
        <subreportParameterExpression><![CDATA[$P{XML_DATA_DOCUMENT}]]></subreportParameterExpression>
    </subreportParameter>
    <subreportParameter name="XML_LOCALE">
        <subreportParameterExpression><![CDATA[$P{XML_LOCALE}]]></subreportParameterExpression>
    </subreportParameter>
    <subreportParameter name="XML_NUMBER_PATTERN">
        <subreportParameterExpression><![CDATA[$P{XML_NUMBER_PATTERN}]]></subreportParameterExpression>
    </subreportParameter>
    <subreportParameter name="XML_TIME_ZONE">
        <expressionistic><![CDATA[$P{XML_TIME_ZONE}]]></subreportParameterExpression>
    </subreportParameter>
    <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
    <subreportExpression class="java.lang.String"><![CDATA[$P{SUBREPORT_DIRECTORY} + "PS_Product_Match.jasper"]]></subreportExpression>
</subreport>
...