Java Jasper报告解析XML列blob

Java Jasper报告解析XML列blob,java,xml,postgresql,jasper-reports,Java,Xml,Postgresql,Jasper Reports,我使用postgresql作为数据库。在db中,我有一列包含带有语言代码的xml。我想解析xml并通过报表语言获取价值 从BookDefinitions中选择o.name,o.price o此o.name包含该xml值: <?xml version="1.0" encoding="UTF-8"?> <values> <en-us>en value</en-us> <es>es value</es> &

我使用postgresql作为数据库。在db中,我有一列包含带有语言代码的xml。我想解析xml并通过报表语言获取价值

从BookDefinitions中选择o.name,o.price o
o.name包含该xml值:

<?xml version="1.0" encoding="UTF-8"?>
<values>
    <en-us>en value</en-us>
    <es>es value</es>
    <ru>ru value</ru>
    <tr>tr value</tr>
</values>

en值
es值
ru值
tr值

我可以用jasper的表达式来解析它吗?或者我可以在从db中选择时进行解析吗(我不知道如何在select查询中获取报表语言并在select中解析xml)

您可以在select过程中直接在postgresql中进行解析。 PostgreSql具有多种多样的功能。
如果您看一下这些函数,您将看到
xpath
函数,该函数可用于在select语句期间从XML类型提取数据。


对于xPath的引用,请查看。

jasperreport有一个xmldatasource,您可以创建一个子报告并将blob作为xmldatasource发送到该子报告,然后您可以解析子报告中的xml并显示内容,我不确定您是否要显示值或整个xml,如果它是一个报告,我想你应该以一种很好的方式显示这些值,我的意思是不要以xml的形式显示,请检查这个链接


如我所述,这没关系。但我怎么能用报告语言来做这个呢?我真的不明白你的问题。您应该能够使用xPath直接在postgresql中提取所需的所有内容……我将通过报告语言解析xml。xml字段等于语言代码,我只取其中一个字段。谢谢Matt!我仔细寻找你的答案并找到了解决办法。我用示例代码为您的帖子发布了一个编辑建议。这看起来像我想要的,但我会在表中使用它(作为字段),所以如果我在datatable中将子报表作为列,我不确定它是否可以工作。我将尝试这种方法。如果子报表位于详细信息区域Jasper不接受xml数据源作为参数,则将在每一行生成子报表。它以文件的形式请求数据源。我也找不到将其作为参数发送的示例。我专注于马特的回答。不管怎么说,这真是个好方法,谢谢!