反馈已提交

网络繁忙

XML数据集

  • 文档创建者:文档助手1
  • 历史版本:25
  • 最近更新:Lily.Wang 于 2021-04-16
  • 1. 概述

    XML 数据集,就是指数据源是一系列的 XML 文件。我们可以将这些文件作为数据来源,用 FineReport 来呈现这些数据,并做相应的数据分析。

    %FR_HOME%\webroot\WEB-INF\reportlets目录下新建 frtest.xml,其内容如下,下面我们来看下文本数据集的制作步骤:



    <?xml version="1.0" encoding="UTF-8"?>
    <frtest>
        <Customers>
        <Name>ALFKI</Name>
    <type>ALfreds Futterkiste</type>
    <value>90</value>
    </Customers>
        <Customers>
        <Name>ANATR</Name>
    <type>Ana Trujillo Emparedados y helados</type>
    <value>90</value>
    </Customers>
    </frtest>

    注:如果要使用已存在的 XML 文件作为数据集,需把相应的文件拷贝到%FR_HOME%\webapps\webroot\WEB-INF\reportlets 目录下。

    2. 定义文件数据集

    下面我们来为大家介绍下如何定义文件数据集。

    点击数据集下面的「加号」,选择「文件数据集」,如下图:

    222

    2.1 选择 XML 文件

    弹出文件数据集对话框后,文本类型选择「XML」。点击本地文件后面的选择按钮,选择已经存在的 frtest.xml 文件,右侧的关键节点面板即会自动刷新获取 XML 中的所有节点信息,并将节点以树状结构的形式显示出来,如下图所示:
    222

    注:若一节点,有多个同名同级子节点,但各个子节点的叶子节点不同(存储数据的节点标志),取叶子节点的并集,如下图所示:

    另:如果 XML 数据集中有 2 个根节点,那么 FineReport 会自动在顶部添加一个没有名字的空根节点。

    <?xml version="1.0" encoding="UTF-8"?>
    <bookstore>
        <book>
        <author>J K.Rowing</author>
    <title>HMWHERE</title>
    <author>J K.Rowing</author>
    <author>J K.Rowing</author>
    </book>
        <book>
        <author>J K.Rowing</author>
    <author>J K.Rowing</author>
    <author>J K.Rowing</author>
    <price>19</price>
    </book>
    </bookstore>

    2.2 节点选择

    FineReport 的 XML 文件数据集支持将文件中的所有节点以树状结构显示出来,但是不能像存储过程一样返回多个结果集,将每个节点的数据均显示在一个数据集中,一次只能返回一个子节点中的所有数据,想要显示哪个子节点的信息就选中该子节点即可,最后数据来源于选中节点的子节点、子节点的子节点直至叶子节点。

    <?xml version="1.0" encoding="GBK"?>
    <PickBillPrintEntity>
        <modifyTime>2013-08-11</modifyTime>
    <exprossCode>STO</exprossCode>
    <expressName>申通E物流</expressName>
        <pickDetail>
      <PrintPickDetailEntity>
        <address>陈村镇白陈路锦龙工业小区</address>
    <city>佛山市</city>
    <contactName>曹淑仪</contactName>
    <deliveryOrderNo>668267627204339729</deliveryOrderNo>
    <district>顺德区</district>
    <prov>广东省</prov>
    <qty>1.0</qty>
      </PrintPickDetailEntity>
      <PrintPickDetailEntity>
        <address>陈村镇白陈路锦龙工业小区</address>
    <city>佛山市</city>
    <contactName>曹淑仪</contactName>
    <deliveryOrderNo>668267627204339729</deliveryOrderNo>
    <district>顺德区</district>
    <prov>广东省</prov>
    <qty>2.0</qty>
      </PrintPickDetailEntity>
        </pickDetail>
    <packDetail>
      <PrintPackEntity>
        <baocai>SJZX*1</baocai>
    <itemCode>694852470667309</itemCode>
    <goodDese>电话</goodDese>
    <marksNumber>220cm*240cm</marksNumber>
    <qty>1.0</qty>
    <orderCount>1.0</orderCount>
    <skuCount>1.0</skuCount>
      </PrintPackEntity>
      <PrintPackEntity>
        <baocai>SJZX*1</baocai>
    <itemCode>694852471667309</itemCode>
    <goodDese>时光印记</goodDese>
    <marksNumber>220cm*240cm</marksNumber>
    <qty>1.0</qty>
    <orderCount>1.0</orderCount>
    <skuCount>1.0</skuCount>
      </PrintPackEntity>
      <PrintPackEntity>
        <baocai>SJZX*1</baocai>
    <itemCode>694852472667309</itemCode>
    <goodDese>维多利亚</goodDese>
    <marksNumber>200cm*230cm</marksNumber>
    <qty>2.0</qty>
    <orderCount>1.0</orderCount>
    <skuCount>2.0</skuCount>
      </PrintPackEntity>
      <other>
        <otherNo>1</otherNo>
      </other>
        </packDetail>
    </PickBillPrintEntity>

    注:如果编码类型选择 UTF-8,预览的时候中文字符可能会出现乱码,这时你需将编码类型换成 GBK 或其他类型即可。

    其返回数据集中的数据遵循以下五个规则:

    • 选中节点只有叶子节点,则叶子节点的并集为数据集字段;

    选中节点只有一个非叶子节点的子节点,则此子节点的叶子节点为数据集字段,如选中 PickDetail,效果与选中 PrintPickDetailEntity 一致;

    • 选中节点有多个子节点(非叶子节点),此时按第一个子节点来计算。如选中 pactDetail,有多个子节点(PrintPackEntity 和 Other),此时按照第一个子节点“PrintPackEntity”来计算;

    • 选中节点既有叶子节点,又有普通子节点(非叶子节点),此情况为一对多,(其中叶子节点为“一”,普通子节点的叶子节点为“多),则数据集字段为所有叶子节点加第一个普通子节点的叶子节点,数据内容:其中“一”跟随“多”来扩展,如选中根节点 PickBillPrintEntity,他有三个叶子节点和两个子节点(pickDetail和 PacDetail,选第一个),数据如下图,显示其三个叶子节点和第一个子节点中的数据:


    • 若同一叶子节点有多个值,用“;”隔开,如下图,author 这个字段的值为:James McGovern;Per Bothner;Kurt Cagle;James Linn;Vaidyanathan Nagaraian。



    注:必须选中一个节点,否则点击确定后预览为空。

    示例中只有一个子节点 Customers,我们这里选中父节点 frtest,子节点 Customers 或者叶子节点的任何一个,其返注回的结果都一样,那么就选中 Customers 子节点,点击预览按钮,如下图:

    2.3 效果查看

    设置完后,可以看到模板数据集中会增加一个名为 'File1' 的数据集,如下图:



    3. 动态 XML 数据集

    其制作步骤与 Excel 数据集相同。

    4. 远程 XML 数据集

    远程 XML 数据集有两种:

    • 通过 JSP 调用,其实现思路与 Excel 数据集相同,详细请参考 远程 Excel 数据集

    • 直接通过 URL 调用 XML 文件。

    下文介绍直接通过 URL 调用 XML 文件。 

    4.1 直接调用 XML 文件

    直接调用 XML 文件,可以通过在 URL 中输入:http://ip:端口/应用名称/xml文件来调用

    注:请使用英文为 XML 文件命名,否则会连接失败。

    假设 Tomcat 环境下的 WebReport 工程目录下存在上面示例中用的 frtest.xml,下面可以在 URL 中输入:http://localhost:8075/WebReport/frtest.xml,如下图所示:


    点击关键节点面板的刷新按钮,读取 XML 文件中而的数据,然后选中需要使用的节点,选择规律与本地 XML 文件一致。

    5. 注意事项

    不支持 Unicode 十进制编码值为 183、215、247 的字符,会导致  XML 文件数据集无法加载,查询 Unicode 码表,发现对应的三个字符为:· × ÷

    解决方法:删掉 XML 里面的这三个字符即可,或者使用 <![CDATA[xxx]]> 包裹起来


    附件列表


    主题: 数据准备
    已经是第一篇
    已经是最后一篇
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭



    AI

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持