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

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

这些程序包有一个公共的问题:它们要求在它们可以把你的数据形成图表之前,你必须把你的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>

时间: 2024-08-03 21:56:38

用Java从XML文件中获取业务图表的相关文章

java解析xml文件中数据,数据之间用0x2588做分隔符,怎么解析

问题描述 java解析xml文件中数据,数据之间用0x2588做分隔符,怎么解析 java解析xml文件中数据,数据之间用0x2588做分隔符,0x2588做分隔符分隔符问题,这个0x2588的分隔符怎么处理 解决方案 xml字符串.split((char)(0x2588)) 解决方案二: 我试试 ,谢谢好心人,谢谢你抽出时间 谢谢

从XML文件中获取信息的vbs代码_vbs

复制代码 代码如下: '***************************************************************** '** Script: getxmlelement.vbs '** Version: 1.0 '** Created: 1/8/2009 10:58PM '** Author: Adriaan Westra '** E-mail: '** Purpose / Comments: '** Get an element from a xml fi

InfoPath开发实战(2):获取XML文件中的数据

本节的内容: 如何在InfoPath中使用数据连接来从XML文件中获取数据 如何通过代码来修改数据连接中的XML文件路径 打开Visual Studio 2008,以"InfoPath 2007表单模板"为项目模板新建一个项目. 项目创建完后,就会看到一个空空如也的mainifest.xsf文件,这就是InfoPath表单的设计区域,我们可以使用"工具箱"和"版式"面板来设计表单. 我们先不急于设计表单,而是添加一个数据连接.为了让示例更加有趣,

android-从XML文件中获取完整的 RSS 内容提要

问题描述 从XML文件中获取完整的 RSS 内容提要 以下是XML 文件,我想从每个Item tag中取出 Description tag 的内容.我使用一个SAX解析器,但是不正确,如何实现呢? <?xml version="1.0" encoding="utf-8"?> <!-- generator="FeedCreator 1.8.0-dev (info@mypapit.net)" --> <rss versi

java实现利用String类的简单方法读取xml文件中某个标签中的内容_java

1.利用String类提供的indexOf()和substring()快速的获得某个文件中的特定内容 public static void main(String[] args) { // 测试某个词出现的位置 String reqMessage = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>" + "<in>" + "<head&g

java 生成XML文件后,能不能去掉其中的根节点,但是不能删除根节点中的子节点内容

问题描述 java 生成XML文件后,能不能去掉其中的根节点,但是不能删除根节点中的子节点内容 比如 这个,生成的XML文件格式内容为: <?xml version=""1.0"" encoding=""UTF-8""?> <!--查询行号--> <!--机构码--> <!--公共交易机构名称--> <!--交易来源--> <!--交易名称--> <

sap-导航菜单的值从xml文件中动态获取

问题描述 导航菜单的值从xml文件中动态获取 有这样一个asp页面,页面的样式已设置 item_2 item_2 item_3 item_4 </li> .......//多个li </ul> 还有一个xml文件 怎么样获取xml中名称字段,将值放在li中,求大神赐教 解决方案 解析XML的过程放在后台处理,在前台用ajax作为中间桥梁,传递前后台数据 解决方案二: 导航--XML文件

xml-从android外部文件中获取web服务的 uri?

问题描述 从android外部文件中获取web服务的 uri? 我开发一个 android 应用程序调用rest web服务,解析结果到 Json 对象.我想在一个单独的文件中保存 web 服务的 URI,所以我在 strings.xml 文件中添加了基础的 uri: <string name="BaseRestURL">http://192.168.1.2:8080/SensorRestService/webresources/</string> 在 java

android工程文件的res文件下的xml文件中color标签的值如何动态修改

问题描述 android工程文件的res文件下的xml文件中color标签的值如何动态修改 请问给位前辈,如果想动态修改android的strings.xml文件中的color属性java代码该怎莫写呀!?请大家指点一下!是修改传入新值,不是获取. 解决方案 在values下面新建一个叫做color.xml的文件内容如下颜色都是16进制的,你可以通过颜色表来查询. <?xml version="1.0" encoding="utf-8" ?> #FFFF