龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > JAVA开发 >

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

时间:2009-12-23 15:42来源:未知 作者:admin 点击:
分享到:
Java要害字导航 网络 J2ME 手机游戏 JavaCard Struts 游戏 分析器 JAAS EJB JavaMail 设计模式 J2EE 数据的图解表示法是一个热门的话题。 我们翻阅杂志,可以看到很多公司提供复杂的图形程序包,

  Java要害字导航 网络 J2ME 手机游戏 JavaCard Struts 游戏 分析器 JAAS EJB JavaMail 设计模式 J2EE

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

  这些程序包有一个公共的问题:它们要求在它们可以把你的数据形成图表之前,你必须把你的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>
  <Type>1</Type>
  <Title>Points By Player</Title>
  <CatTitle>Player Name</CatTitle>
  <ValTitle>Points</ValTitle>
  <SeriesTitles>Points Scored</SeriesTitles>
  </chart>
  Servlet是如何工作的

  代码段1中的doGet函数取得参数值(包括图表、宽度和高度),载入配置XML文件,分析这个文件取得正确的数据文件,然后设置所有的DoChart(见代码段2)函数所需要的变量,而DoChart函数是执行实际的制表功能的。

  配置图表对象
   
  配置图表对象是一个两步操作。 第一步是设置图表的外观属性。 第二步是将这些数据装载入图表。
  这些都是由DoChart函数来完成的。 它分析配置文件并取得一个图表类型,然后以此构造出11个图表中的一个。

  在下面的例子中,球员的得分情况被制成了一张圆饼图。 得分组成数据系列,球员姓名组成类别系列。
  
  

精彩图集

赞助商链接