快速业务通道

用Java从XML文件中获取业务图表 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23

用Java从XML文件中获取业务图表

时间:2010-12-06

数据的图解表示法是一个热门的话题。我们翻阅杂志,可以看到很多公司提供复杂的图形程序包,可以让你处理你的数据并使之可视化。

这些程序包有一个公共的问题:它们要求在它们可以把你的数据形成图表之前,你必须把你的XML数据格式化成一种它们能够读懂的特定的格式。 这样的话,XML有力的灵活性就被埋没了,因为你必须改换数据格式--通常使用XSLT。 这并不总是想看上去那么微不足道的,因为有时开发者必须从第三方的数据源获得XML文件,然后在把这些XML文件发送到客户之前给它们添加图表。 举例来说吧,一个金融服务公司可能必须从一个租用的数据库中取得一家公司的基本资料,然后在把它转化成XSL格式之前需要分析这些数据。

本文将介绍如何一步一步的使用Java开发一个业务图表服务器。服务器调用你的数据源,然后按照你设置来生成数据序列和种类的XPath变量分析数据。 它然后把数据载入制图表引擎,一个名为JFreeChart的出色的源码开放程序包。

最后返回到服务器的调用者的图表是一个JPEG文件,这样它就可以被发送到一个基于浏览器的产品而不需要下载额外的软件了。

在这边文章中我开发的服务器(起名为chartserver),是一个初级版本,调用固定的XML文件作为数据源。 在本文的结尾,我将讨论如何把这个服务器扩展成可以调用自己设置的参数需要的数据服务器。 另外,这个例程使用开放源码的JFreechart引擎在服务器端构造它的图表。 而且想要把它修改成使用任何其它的制图表引擎的话,也是一件很简单的事情。

图表的元素

大部分的图表可以分解成一系列公共的对象,其中最主要的两个是数据系列和数据种类。 数据系列正像它名称所蕴含的意义---一系列计划放在一起组成一种关系的数据。 举例来说,在一个线状图表中数据系列是线内的点;在一个圆饼图中,数据系列是组成饼图的每个表示数量的"块"。 另一方面数据种类是描述数据系列的点。 举例来说,在一个线状图中,如果数据系列是股票收盘价格,那么通常的匹配这些数据的日期类别将是股票在这个价位收盘的日期。

本文中的例子是基于一个包含一个虚拟的球队的赛季赛况统计数据的XML文件。在下面的例子中,球员的得分情况被制成了一张圆饼图。 得分组成数据系列,球员姓名组成类别系列。

某些图表需要多种数据系列,比如你想比较两组数据的图表,最现实的例子就是预算收入和。 实际收入,或者进行的比赛项目和取得的成绩, 它然后使用这些值作为参数来构造图表对象。

这些值连同其它的用于每个图表的配置信息一起保存在一个charts.xml文件中。

<chart id="points"> <url>http://localhost/players.xml</url> <config>http://localhost/pmconfig.xml</config> <series>//Players/Player[Points>0 and Minutes>1000]/Points</series> <categories>//Players/Player[Points>0 and Minutes>1000]/Name</categories> <XSize>600</XSize> <YSize>400</YSize> </chart>

这段XML文本告诉服务器用于生成图表的数据源储存在什么位置,生成图表的配置信息储存在什么位置以及用于数据系列和数据种类的XPath是什么。 我们可以看出,XPath值可以相当的复杂,在这个例子中,我们用一些条件过滤这个XML文件,找到那些球员有得分,那些球员上场时间超过1000分钟。 他们的分数组成数据系列,他们的姓名组成类别系列。

现在,用于单独图表的配置文件包含设定图表类型,图表标题,种类标题,值标题和每个系列的标题。 这样就能够轻而易举的使用数据系列被定义的颜色来表示这个系列,而不是使用某种代码来表示了。

<chart>

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号