解析某个目录下 XML 文件

编辑
  • 文档创建者:印然
  • 浏览次数:4587次
  • 编辑次数:12次
  • 最近更新:Kevin-s 于 2019-06-23
  • 1. 描述

    使用场景:电脑某个目录下保存了几个 XML 文件,希望把 XML 文件转换为报表数据源。

    其中 Northwind.xml 记录数据格式如下:


    <?xml version="1.0" encoding="UTF-8"?>
    <Northwind>
        <Customers>
        <CustomerID>ALFKI</CustomerID>
    <CompanyName>ALfreds Futterkiste</CompanyName>
    <ContactName>Maria Anders</ContactName>
    <ContactTitle>Sales Representative</ContactTitle>
    <Address>Obere Str.57</Address>
    <City>Berlin</City>
    <PostalCode>12209</PostalCode>
    <Country>Germany</Country>
    <Phone>030-0074321</Phone>
    <Fax>030-0076545</Fax>
    </Customers>
    </Northwind>

    最终实现根据不同的文件名动态获取不同的 XML 中的内容作为报表数据源,如下图所示:



    2. 实现思路

    FineReport 中可以通过自定义程序数据集来对 XML 字段数据进行解析,再通过参数的方式,动态获取 XML 文件名,最终作为报表数据源。


    3. 操作步骤

    2.1 定义 XMLColumnNameType4Demo 封装类

    首先定义参数 name 及 type ,供其他类直接调用,安全性比较高,详细代码如下所示:

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


    2.2 定义 XMLParseDemoDataModel.java 类文件

    定义 XMLParseDemoDataModel.java 类继承 AbstractDataModel 接口,实现 getColumnCount、getColumnName、getRowCount、getValueAt 四个方法,详细代码如下所示:

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


    2.3 定义程序数据集 XMLDemoTableData

    通过参数 $filename,动态显示 XML 文件内容,首先 XML 文件需要放到某个目录下,如下代码是放到/Users/susie/Downloads/,并且定义需要解析的数据列,这边定义的数据列名称,跟 XML 内字段名称是一一对用的。

    详细代码如下所示:

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

    注:如果 XML 文件的格式与问题描述处所展示的 XML 格式不一致,则需要修改类中的 deep 变量,把列名所在的节点层数改成相对应的数值。


    2.4 编译程序数据源

    可以在 Eclipse 或 IntelliJ IDEA 中编译上述 Java 文件,注意需要引入 FineReport 设计器下的 JAR 包,详细点击 Eclipse中启动设计器

    注:XML 的文件路径也需要根据实际情况修改,例如下载到 D 盘,即D://

    分别编译 XMLColumnNameType4Demo.java、XMLParseDemoDataModel.java、XMLDemoTableData.java 三个类文件,将生成的 class 文件放置于%FR_HOME%\webapps\webroot\WEB-INF\classes\com\fr\data 下。


    2.5 配置程序数据源

    新建程序数据集,如下图所示:

    image.png

    选择我们定义好的程序数据集 XMLDemoTableData.class文件,添加数据集默认参数 filename,值为 Northwind,如下图所示:



    2.6 使用程序数据源

    在模板数据集窗口,点击预览按钮,弹出参数对话框,输入要显示的 XML 文件名称,点击确定则可以把 Northwind.xml 文件里面的数据读取出来转换报表数据源了,如下图:


    附件列表


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

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

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