JRXmlDataSource с queryString не дает записей - PullRequest
4 голосов
/ 01 марта 2012

У меня проблема с источником данных XML для Jasper Reports.Когда я использую selectExpression в JRXmlDataSource конструкторе, все работает, но когда я использую queryString в .jrxml, я не получаю записей.

рабочий пример:

JRXmlDataSource ds2 = new JRXmlDataSource(new FileInputStream(dataSourceFile), "/pages/page");

пример не работает:

JRXmlDataSource ds1 = new JRXmlDataSource(new FileInputStream(dataSourceFile));

<jasperReport>
    <queryString language="xPath">
        <![CDATA[/pages/page]]>
    </queryString>
    ...
</jasperReport>

XML данных:

<?xml version="1.0" encoding="UTF-8"?>
<pages>
    <page>
        <firstname>X</firstname>
        <lastname>Y</lastname>
    </page>
    <page>
        <firstname>Z</firstname>
        <lastname>V</lastname>
    </page>
    <page>
        <firstname>B</firstname>
        <lastname>S</lastname>
    </page>
</pages>

1 Ответ

7 голосов
/ 03 марта 2012

Я нашел решение.Вместо передачи источника данных XML в JasperFillManager, ему можно передать документ XML, как показано ниже.Теперь XPath в шаблоне <queryString language="xPath"> внутри .jrxml работает с пропущенным документом, и это все, что я хочу.

Document document = JRXmlUtils.parse(JRLoader.getLocationInputStream(dataSourceFile));
params.put(JRXPathQueryExecuterFactory.PARAMETER_XML_DATA_DOCUMENT, document);
jasperPrint = JasperFillManager.fillReport(jasperReport, params);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...