(mysql5.0)sql脚本
CREATE TABLE `hostdiskinfo` (
`hdid` bigint(20) NOT NULL auto_increment,
`begintime` datetime default '0000-00-00 00:00:00',
`hdiskinfo` longtext,
`hostid` bigint(20) default '0',
PRIMARY KEY (`hdid`)
) ;
这是查询结果:
mysql> select hdiskinfo,begintime from hostdiskinfo where hostid=11
+-------------------------+---------------------+
| hdiskinfo | begintime |
+-------------------------+---------------------+
| C:,66.4;D:,82.8;E:,80.9 | 2009-02-06 15:15:03 |
| C:,66.4;D:,82.8;E:,80.9 | 2009-02-06 15:23:45 |
| C:,66.1;D:,82.8;E:,80.9 | 2009-02-06 15:30:02 |
| C:,64.4;D:,82.8;E:,83.8 | 2009-02-09 09:37:20 |
| C:,64.4;D:,82.8;E:,83.8 | 2009-02-09 09:39:41 |
| C:,64.4;D:,82.8;E:,83.8 | 2009-02-09 09:48:23 |
| C:,64.4;D:,82.8;E:,83.8 | 2009-02-09 09:51:14 |
+-------------------------+---------------------+
7 rows in set (0.00 sec)
现在的要求是要将以上的查询结果以下面形式写入到xml文件里面:
<?xml version="1.0" encoding="UTF-8"?>
<chart>
<series>
<value xid="0">02-06 15:15</value>
<value xid="1">02-06 15:23</value>
<value xid="2">02-06 15:30</value>
<value xid="3">02-09 09:37</value>
<value xid="4">02-09 09:39</value>
<value xid="5">02-09 09:48</value>
<value xid="6">02-09 09:51</value>
</series>
<graphs>
<graph gid="1" title="C:">
<value xid="0">66.4</value>
<value xid="1">66.4</value>
<value xid="2">66.1</value>
<value xid="3">64.4</value>
<value xid="4">64.4</value>
<value xid="5">64.4</value>
<value xid="6">64.4</value>
</graph>
<graph gid="2" title="D:">
<value xid="0">82.8</value>
<value xid="1">82.8</value>
<value xid="2">82.8</value>
<value xid="3">82.8</value>
<value xid="4">82.8</value>
<value xid="5">82.8</value>
<value xid="6">82.8</value>
</graph>
<graph gid="3" title="E:">
<value xid="0">80.9</value>
<value xid="1">80.9</value>
<value xid="2">80.9</value>
<value xid="3">83.8</value>
<value xid="4">83.8</value>
<value xid="5">83.8</value>
<value xid="6">83.8</value>
</graph>
</graphs>
</chart>
下面是我之前的实现方法:
package org.enilu.util.amchart;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.enilu.util.db.DBConnection;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
public class AmchartDemo02 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
List all = getData();
System.out.println(all.size());
createXML(all);
}
public static List getData() {
Connection conn = DBConnection.getConnection("conf.properties");
List all = new ArrayList();
ResultSet rs = null;
Hostdiskinfo hd = null;
PreparedStatement pstmt = null;
String sql = "select hdiskinfo,begintime from hostdiskinfo where hostid=11";
try {
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
while (rs.next()) {
hd = new Hostdiskinfo();
hd.setHdiskinfo(rs.getString(1));
hd.setBegintime(rs.getTimestamp(2));
System.out.println(hd.getBegintime());
all.add(hd);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
rs.close();
pstmt.close();
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return all;
}
public static boolean createXML(List all) {
Document doc = new Document();
Element chart, series, value, graphs, ce, de, ee, fe, ge, he = null;
ce = new Element("graph");
de = new Element("graph");
ee = new Element("graph");
fe = new Element("graph");
ge = new Element("graph");
he = new Element("graph");
chart = new Element("chart");
series = new Element("series");
graphs = new Element("graphs");
for (int i = 0; i < all.size(); i++) {
value = new Element("value");
value.setAttribute("xid", i + "");
Hostdiskinfo hd = (Hostdiskinfo) all.get(i);
value.setText(hd.getBegintime().toString().substring(5, 16));
series.addContent(value);
}
chart.addContent(series);
Hostdiskinfo hd2 = (Hostdiskinfo) all.get(0);
String st = hd2.getHdiskinfo();
if (st.contains("C:")) {
ce.setAttribute("gid", "1");
ce.setAttribute("title", "C:");
}
if (st.contains("D:")) {
de.setAttribute("gid", "2");
de.setAttribute("title", "D:");
}
if (st.contains("E:")) {
ee.setAttribute("gid", "3");
ee.setAttribute("title", "E:");
}
if (st.contains("F:")) {
fe.setAttribute("gid", "4");
fe.setAttribute("title", "F:");
}
if (st.contains("G:")) {
ge.setAttribute("gid", "5");
ge.setAttribute("title", "G:");
}
if (st.contains("H:")) {
he.setAttribute("gid", "6");
he.setAttribute("title", "H:");
}
for (int a = 0; a < all.size(); a++) {
Hostdiskinfo hd3 = (Hostdiskinfo) all.get(a);
String[] st1 = hd3.getHdiskinfo().split(";");
for (int b = 0; b < st1.length; b++) {
String[] st2 = st1[b].split(",");
value = new Element("value");
value.setAttribute("xid", a + "");
value.setText(st2[1]);
if (st2[0] == "C:" || st2[0].equals("C:")) {
ce.addContent(value);
}
if (st2[0] == "D:" || st2[0].equals("D:")) {
de.addContent(value);
}
if (st2[0] == "E:" || st2[0].equals("E:")) {
ee.addContent(value);
}
if (st2[0] == "F:" || st2[0].equals("F:")) {
fe.addContent(value);
}
if (st2[0] == "G:" || st2[0].equals("G:")) {
ge.addContent(value);
}
if (st2[0] == "H:" || st2[0].equals("H:")) {
he.addContent(value);
}
}
}
if (ce.getChildren().size() > 1) {
graphs.addContent(ce);
}
if (de.getChildren().size() > 1) {
graphs.addContent(de);
}
graphs.addContent(ee);
if (fe.getChildren().size() > 1) {
graphs.addContent(fe);
}
if (ge.getChildren().size() > 1) {
graphs.addContent(ge);
}
if (he.getChildren().size() > 1) {
graphs.addContent(he);
}
chart.addContent(graphs);
doc.addContent(chart);
Format f = Format.getRawFormat();
f.setEncoding("UTF-8");
f.setIndent(" ");// 每一层元素缩排两格
XMLOutputter XMLOut = new XMLOutputter(f);
try {
XMLOut.output(doc, new FileOutputStream("d:/amline_data.xml"));
return true;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
}
我想不到其他的实现方法,本来打算在for循环里动态new graph实例,但是我做不到,不知哪位高人路过你呢个指点下^_^
效果图如下:
后来朋友给了个更好的循环方法,贴这儿^_^:
package org.enilu.util.amchart;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.enilu.util.db.DBConnection;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
public class AmchartDemo03 {
public static void main(String[] args) {
List all = getData();
createXML(all);
}
/**
* 从数据库里取得数据
*
* @return
*/
public static List getData() {
Connection conn = DBConnection.getConnection("conf.properties");
List all = new ArrayList();
ResultSet rs = null;
Hostdiskinfo hd = null;
PreparedStatement pstmt = null;
String sql = "select hdiskinfo,begintime from hostdiskinfo where hostid=11";
try {
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
while (rs.next()) {
hd = new Hostdiskinfo();
hd.setHdiskinfo(rs.getString(1));
hd.setBegintime(rs.getTimestamp(2));
System.out.println(hd.getBegintime());
all.add(hd);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
rs.close();
pstmt.close();
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return all;
}
/**
* 创建数据源文件xml
*
* @param all
* @return
*/
public static boolean createXML(List all) {
Document doc = new Document();
Element chart, series, value, graphs, graph = null;
chart = new Element("chart");
series = new Element("series");
graphs = new Element("graphs");
for (int i = 0; i < all.size(); i++) {
value = new Element("value");
value.setAttribute("xid", i + "");
Hostdiskinfo hd = (Hostdiskinfo) all.get(i);
value.setText(hd.getBegintime().toString().substring(5, 16));
series.addContent(value);
}
Hostdiskinfo hostdiskinfo = (Hostdiskinfo) all.get(0);
String diskinfo = hostdiskinfo.getHdiskinfo();
chart.addContent(series);
/* 随即取出一条数据根据是否大写判断有几个磁盘,并将磁盘名称放到集合allDriver里 */
List allDriver = new ArrayList();
Hostdiskinfo hd2 = (Hostdiskinfo) all.get(0);
String st = hd2.getHdiskinfo();
for (int i = 0; i < st.length(); i++) {
Character c = st.charAt(i);
if (c.isUpperCase(c)) {
allDriver.add(c);
System.out.println(c);
}
}
int driverNum = allDriver.size();
for (int m = 0; m < driverNum; m++) {
graph = new Element("graph");
graph.setAttribute("gid", m + "");
graph.setAttribute("title", allDriver.get(m) + "盘");
for (int n = 0; n < all.size(); n++) {
Hostdiskinfo hd = (Hostdiskinfo) all.get(n);
String st1[] = hd.getHdiskinfo().split(";");
String st2[] = st1[m].split(",");
value = new Element("value");
value.setAttribute("xid", n + "");
value.setText(st2[1]);
graph.addContent(value).detach();
}
graphs.addContent(graph);
}
chart.addContent(graphs);
doc.addContent(chart);
Format f = Format.getRawFormat();
f.setEncoding("UTF-8");
f.setIndent(" ");// 每一层元素缩排两格
XMLOutputter XMLOut = new XMLOutputter(f);
try {
XMLOut.output(doc, new FileOutputStream("d:/amline_data.xml"));
return true;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
}
查看在新博客http://enilu.github.io的文章地址:http://enilu.github.io/%E9%9A%8F%E6%89%8B%E8%AE%B0/2009/09/28/%E7%94%A8amchart%E7%9A%84%E6%97%B6%E5%80%99%E9%81%87%E5%88%B0%E4%B8%80%E4%B8%AA%E9%9A%BE%E9%A2%98/
相关推荐
根据amchart的说明文档用ASP生成XML后画图文报表的实例。 原代码在我的博客上可以参考:http://blog.csdn.net/e_zhiwen/archive/2010/11/12/6004617.aspx 这里是我的做好后的实例。
1. **数据准备**:首先,你需要将数据整理成XML格式。XML是一种结构化的数据交换格式,易于读写,并且跨平台兼容。在.NET中,可以使用System.Xml命名空间下的类如XmlDocument或XDocument来生成XML文件。 2. **图表...
`amChart` 是一个强大的数据可视化工具,专为创建交互式图表和图形而设计。它支持多种平台,包括 Web、移动应用以及 Flex 应用程序。`flex amChart` 特别是针对 Adobe Flex 开发者,提供了在 Flex 项目中集成动态...
amCharts是一个流行的JavaScript图表库,但通过一些技巧,我们可以将其与C#后端集成,实现动态数据更新和各种图表类型,如饼图、柱状图、曲线图以及XY坐标图。 首先,让我们了解一下amCharts。这是一个开源的图表库...
以一个实时负荷曲线为例,Amchart的集成流程包括: 1. **创建SWFObject实例**:创建`amlineUnitLoad`对象,其中包含多个`SWFObject`实例,每个实例引用`amline.swf` Flash组件。 2. **配置SWFObject属性**:设置每...
2. **数据绑定**:AMCHART允许开发者将数据动态绑定到图表上,无论是JSON格式、XML格式还是其他数据源,都可以方便地与图表进行交互。示例中可能会展示如何设置数据源,以及如何处理动态更新的数据。 3. **交互功能...
1. **创建激活文件**:在与 `.swf` 文件相同的目录下新建一个名为 `amcharts_key.txt` 的文本文件。 2. **填写激活码**:在该文本文件中输入激活码 `"AMCHART-LNKS-1966-6679-1965-1082"`。 #### 三、Amchart 的...
在这个"AmChart折线图例子(详细)"中,我们将深入探讨如何使用AmChart创建一个详细的折线图,并通过提供的链接进一步了解实际应用。 首先,要使用AmChart,你需要在HTML文件中引入相关的JavaScript库。这通常包括`...
**标题:“amchart -5 Radar & Polar(flash chart 图表)”** ...通过上述文件和描述,我们可以学习如何使用amchart -5库创建和自定义Radar及Polar图表,以及如何将它们集成到Web项目中,以有效地展示和分析多维度数据。
AmChart和MSChart是两种广泛使用的图表库,用于在Web应用程序中创建动态、交互式的可视化数据。本教程将深入探讨这两个库的实例应用,帮助开发者更好地理解和掌握它们的使用。 首先,AmChart是一款JavaScript图表库...
2. **饼图原理**: 饼图是一种将数据以扇形划分的方式展示,每个扇区代表一个类别,扇区的大小对应类别的相对比例。通过饼图,用户可以直观地看出各类别在总数据中的占比,适用于展示有限类别之间的比较。 3. **ASP...
amcharts 要一个“配置文件”(setting.xml),一个数据文件(amile_data.xml), 一个 SWFObject.js,一个对应的 SWF 就可以生成漂亮的统计报表了 1 SWFObject v1.5的对象结构 view plaincopy to clipboardprint? ...
总的来说,Amchart提供了一种强大的方式来创建动态、交互的图表,允许开发者通过灵活的配置文件和数据文件定制图表的每一个细节,适应各种数据分析和展示需求。通过JavaScript的集成,可以实现与后台数据的实时同步...
5. **绑定数据**:将数据与图表关联起来。 6. **初始化图表**:调用amChart的实例化方法,生成图表。 7. **添加交互事件**:如果需要,可以添加额外的交互事件,如点击事件、拖动事件等。 在实际开发中,`amChart`...
AmCharts 是一款强大的数据可视化...总之,AmCharts 是一个功能强大且易于使用的图表库,对于需要数据可视化的项目来说,是一个理想的选择。通过深入理解和实践,开发者可以利用其特性创建出令人印象深刻的交互式图表。
**标题详解:**"amchart -2 Line & Area(flash chart 图表)" 是一个基于Flash技术的图表库,专门用于创建线形图和面积图。这个库提供了丰富的可视化功能,适用于展示时间序列数据或者比较不同类别的数据变化趋势。...
总的来说,amChart 3.14.4 是一个强大的数据可视化工具,它的转换到JSON数据格式的决策反映了Web开发的现代化趋势,提供了丰富的图表类型和高度的自定义能力,是开发人员构建动态、交互式数据图表的理想选择。
3. **配置数据源**: 将数据绑定到图表,这可以通过XML、JSON或者编程方式实现。 4. **设置图表类型和系列**: 根据需求选择图表类型(如柱状图、线图等),并定义系列(数据的分组)。 5. **自定义样式和外观**: 使用...
综上所述,AMchart Flash图表控件是一个功能强大且灵活的工具,对于需要高质量数据可视化的开发者来说,它是一个非常有价值的资源。通过深入学习和实践,你可以充分利用它的各项特性,为你的项目增添更多亮点。
3. 设置数据源:将数据绑定到图表,可以是XML、JSON或者其他数据格式。 4. 自定义配置:根据需求调整坐标轴、图例、提示框等组件的样式和行为。 5. 添加到舞台:将图表添加到应用的显示列表中。 压缩包中的`charts`...