解析数据库内xml文件

编辑
  • 文档创建者:印然
  • 浏览次数:6054次
  • 编辑次数:12次
  • 最近更新:Carly 于 2019-09-11
  • 1. 问题描述

    数据库表,其中字段 XML 所存的为 XML 格式数据在表 xmltest 中,如下图,在使用该表进行报表制作时,需要将存于XML 字段中的值读取出来作为报表数据源。


    222
    XML 每条记录数据格式如下:

    <Field><Name>MemoryFreeSize</Name><Type>int</Type><Value>1962</Value></Field> <Field><Name>MemoryTotalSize</Name><Type>int</Type><Value>2047</Value></Field> <Field><Name>MemoryUsage</Name><Type>int</Type><Value>4</Value></Field>
    <Field><Name>MemoryFreeSize</Name><Type>Int</Type><Value>1999</Value></Field> <Field><Name>MemoryTotalSize</Name><Type>Int</Type><Value>2048</Value></Field> <Field><Name>MemoryUsage</Name><Type>Int</Type><Value>10</Value></Field>
    <Field><Name>MemoryFreeSize</Name><Type>Int</Type><Value>2000</Value></Field> <Field><Name>MemoryTotalSize</Name><Type>Int</Type><Value>2050</Value></Field> <Field><Name>MemoryUsage</Name><Type>Int</Type><Value>15</Value></Field>

    最终用于制作报表的数据源形式如下:
    222

    对于这样的情况我们如何来实现呢?
    FineReport 中可以通过自定义程序数据集来对 XML 字段数据进行解析,最终返回所希望的数据表。实现步骤如下:


    2. 实现原理

    FineReport 报表的数据来源可以是任何类型的数据,因为 FineReport 是通过 AbstractTableData 抽象类来读取数据源的,因此用户只要实现了 AbstractTableData 抽象类,也就可以用自定义类型的程序数据集,AbstractTableData 抽象类主要有5个方法,具体使用可参考 简单程序数据集 实现原理文档,数据来源是通过把xml格式数据转入 ArrayList 中。


    3. 实现步骤

    3.1 数据集初始化方法 init()

    连接目标数据库后,执行sql查询语句,将 xmltest 表数据全部查询出来,对于 ID、NAME 字段的值我们将其直接存于新的结果集 ArrayList 中,对于 XML 字段我们通过GetXmlDate类对其进行解析后再转入 ArrayList 中。

    GetXmlDate 类代码详见:

    https://git.fanruan.com/demo/example/src/release/10.0/src/main/java/com/fr/data/GetXmlDate.java


    3.2 定义程序数据集

    定义类 XMLRead.java,继承 AbstractTableData 接口,实现 getColumnCount、getColumnName、getRowCount、getValueAt 四个方法;
    XMLRead.java 类代码详见:

    https://git.fanruan.com/demo/example/src/release/10.0/src/main/java/com/fr/data/XMLRead.java

    注:上述代码中的数据库连接需要改成你自己存放 xmltest 表的数据库


    3.3 编译程序数据源

    首先编译 GetXmlDate.java 然后再编译 XMLRead.java,将生成的 class 文件放于WEB-INF/classes/com/fr/data下。
    222


    3.4 配置程序数据源

    新建报表,报表数据集>程序数据集,选择我们定义好的程序数据集 XMLRead.class 文件,名字可以自定义,如 ds1。


    3.5 使用程序数据源

    制作报表保存为 xmlread.cpt,如下:

    222

    B/S 访问报表,效果如下:

    数据库表字段为 XML 类型的数据就可以转换报表数据源了。



    附件列表


    主题: 二次开发
    标签: 暂无标签
    如果您认为本文档还有待完善,请编辑

    文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
    关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
    若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

    此页面有帮助吗?只是浏览 [ 去社区提问 ]