private void build() { try { JRXmlDataSource dataSource = new JRXmlDataSource(XmlDatasourceReport.class.getResourceAsStream("sales.xml"), "/sales/item"); JRXmlDataSource chartDataSource = dataSource.dataSource("/sales/chart/item"); FieldBuilder<Object> idField = field("id", type.integerType()).setDescription("@id"); FieldBuilder<String> itemField = field("item", type.stringType()); FieldBuilder<Integer> quantityField = field("quantity", type.integerType()); FieldBuilder<BigDecimal> unitPriceField = field("unitprice", type.bigDecimalType()); BarChartBuilder barChart = cht.barChart().setDataSource(chartDataSource).setCategory(itemField).series(cht.serie(quantityField).setLabel("Quantity")); report().setTemplate(Templates.reportTemplate) .columns(col.column("Id", idField), col.column("Item", itemField), col.column("Quantity", quantityField), col.column("Unit price", unitPriceField)) .title(Templates.createTitleComponent("XmlDatasource")) .summary(barChart) .pageFooter(Templates.footerComponent) .setDataSource(dataSource) .show(); } catch (DRException e) { e.printStackTrace(); } catch (JRException e) { e.printStackTrace(); } } }