xpath - 如果在单个报告中使用两个 XPath 表达式,如何修复“未找到字段”错误?
问题描述
自 7 天以来,我一直在努力解决我的问题。我有1 个 XML输入数据,并希望将其转换为所需的带有折线图的PDF文件
XML
<?xml version="1.0" encoding="utf-8"?>
<sample-data xmlns:ms="urn:schemas-microsoft-com:xslt" xmlns:ht="urn:xyz.com/xslt/extensions">
<section name="relative-performance">
<historic-valuations>
<valuation-list>
<valuation>
<value>890000</value>
<date>2014-12-01T00:00:00</date>
</valuation>
<valuation>
<value>923789</value>
<date>2015-12-01T00:00:00</date>
</valuation>
<valuation>
<value>897978</value>
<date>2016-12-01T00:00:00</date>
</valuation>
<valuation>
<value>957883</value>
<date>2017-12-01T00:00:00</date>
</valuation>
<valuation>
<value>919203</value>
<date>2018-12-01T00:00:00</date>
</valuation>
<valuation>
<value>950000</value>
<date>2019-12-01T00:00:00</date>
</valuation>
</valuation-list>
</historic-valuations>
<local-market-index>
<local-market>HA7 3</local-market>
<index-value-list>
<index-value>
<value>890000</value>
<date>2014-12-01T00:00:00</date>
</index-value>
<index-value>
<value>931069</value>
<date>2015-12-01T00:00:00</date>
</index-value>
<index-value>
<value>912244</value>
<date>2016-12-01T00:00:00</date>
</index-value>
<index-value>
<value>980893</value>
<date>2017-12-01T00:00:00</date>
</index-value>
<index-value>
<value>948882</value>
<date>2018-12-01T00:00:00</date>
</index-value>
<index-value>
<value>988654</value>
<date>2019-12-01T00:00:00</date>
</index-value>
</index-value-list>
</local-market-index>
</section>
</sample-data>
我的JRXML
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.11.0.final using JasperReports Library version 6.11.0-0c4056ccaa4d25a5a8c45672d2f764ea3498bebb -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Blank_A4" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="f3e693aa-b906-4972-95b4-4a7430cabd45">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="NewData"/>
<subDataset name="subData" uuid="87538cc6-4a9e-4953-acaa-3190030517a8">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="NewData"/>
<queryString language="xPath">
<![CDATA[/sample-data/section[@name='relative-performance']/historic-valuations/valuation-list/valuation]]>
</queryString>
<field name="value" class="java.lang.Integer">
<property name="net.sf.jasperreports.xpath.field.expression" value="value"/>
<fieldDescription><![CDATA[value]]></fieldDescription>
</field>
<field name="date" class="java.lang.String">
<property name="net.sf.jasperreports.xpath.field.expression" value="date"/>
<fieldDescription><![CDATA[date]]></fieldDescription>
</field>
</subDataset>
<queryString language="xPath">
<![CDATA[/sample-data/section[@name='relative-performance']/local-market-index/index-value-listindex-value]]>
</queryString>
<field name="value1" class="java.lang.Integer">
<property name="net.sf.jasperreports.xpath.field.expression" value="value1"/>
<fieldDescription><![CDATA[value]]></fieldDescription>
</field>
<field name="date1" class="java.lang.String">
<property name="net.sf.jasperreports.xpath.field.expression" value="date1"/>
<fieldDescription><![CDATA[date]]></fieldDescription>
</field>
<detail>
<band height="370" splitType="Stretch">
<lineChart>
<chart evaluationTime="Report">
<reportElement x="0" y="40" width="550" height="290" uuid="9bdc21fd-9b73-4ea9-919e-2c8807153f78"/>
<chartTitle/>
<chartSubtitle/>
<chartLegend/>
</chart>
<categoryDataset>
<dataset resetType="Report"/>
<categorySeries>
<seriesExpression><![CDATA["Estimated capital value"]]></seriesExpression>
<categoryExpression><![CDATA[$F{date}]]></categoryExpression>
<valueExpression><![CDATA[$F{value}]]></valueExpression>
<labelExpression><![CDATA[""]]></labelExpression>
</categorySeries>
<categorySeries>
<seriesExpression><![CDATA["Local market index"]]></seriesExpression>
<categoryExpression><![CDATA[$F{date1}]]></categoryExpression>
<valueExpression><![CDATA[$F{value1}]]></valueExpression>
<labelExpression><![CDATA[""]]></labelExpression>
</categorySeries>
</categoryDataset>
<linePlot>
<plot/>
<categoryAxisFormat>
<axisFormat labelColor="#000000" tickLabelColor="#000000" axisLineColor="#000000"/>
</categoryAxisFormat>
<valueAxisFormat>
<axisFormat labelColor="#000000" tickLabelColor="#000000" axisLineColor="#000000"/>
</valueAxisFormat>
</linePlot>
</lineChart>
</band>
</detail>
</jasperReport>
我搜索了很多,才知道在我的情况下,我需要制作 subDataSource,所以我从 How to use multiple xpath datasets on XML datasource using PHP Jasper?
但我仍然收到此错误
There are compilation error please fix the design
Field not found:date ---net.sf.jasperreports.xpath.field.expression@95d1b2c
Field not found:date ---net.sf.jasperreports.xpath.field.expression@62032410
我想在 jasper 报告中制作折线图,然后在 java 中将其制作为 pdf,这是另一部分,但主要问题是我无法制作所需的PDF,即
解决方案
推荐阅读
- arrays - 在设定的时间之间创建日期/时间数组
- python - 将字符串的每个单独字母转换为等效的 ASCII - Python
- python - 如果用户没有在python3中提供语音输入,如何手动获取用户输入
- regex - 如何为自定义语法高亮编写正则表达式
- php - json解码不适用于带有数组的字符串
- javascript - string.startsWith() 通配符或正则表达式
- python - 将 CSV 直接转换为算术运算变量的最佳方法?
- asp.net-core - Log4Net 备份附加程序
- reactjs - 如何引用动态创建的文本字段(在 Formik 中)?
- docker - Mac 上 FEniCS 和 Paraview 的兼容性问题