读取并解析xml,把数据以柱状图的形式显示在页面上,我真的无能为力了

读取并解析xml,把数据以柱状图的形式显示在页面上,我真的无能为力了

问题描述:

解析xml的:

   @SuppressWarnings("unchecked")
public static List<PerfData> parseXml(String path) throws Exception {
SAXBuilder builder = new SAXBuilder();
InputStream in = new FileInputStream("D:\PerfData.xml");
// 获得文档对象
Document doc = builder.build(in);
// 获取根节点
Element root = doc.getRootElement();
// 获取元素的集合
List<PerfData> list = new ArrayList<PerfData>();
List<Element> lists = root.getChildren();
for (int i = 1; i < list.size() - 1; i++) {
Element e = lists.get(i);
PerfData pd = new PerfData();
pd.setName(e.getAttributeValue("NAME"));
pd.setVal(Double.parseDouble(e.getAttributeValue("VAL")));
list.add(pd);
System.out.println(e.getAttributeValue("NAME")+pd.getName() + pd.getVal() + "aaaaa");
}
return list;
}
public static void main(String[] args) {
    try {
        parseXml("D:\\PerfData.xml");
    } catch (Exception e) {
        e.printStackTrace();
    }
}

}


柱状图的:
public class BarChart {
public static void main(String[] args) {
getBarChart();
}
@SuppressWarnings("deprecation")
public static void getBarChart(){
JFreeChart chart = ChartFactory.createBarChart3D("cpu使用率图统计", null, null,getDataSet(), PlotOrientation.VERTICAL, true, false, false);
chart.setBackgroundPaint(Color.WHITE);
CategoryPlot plot = chart.getCategoryPlot();
    CategoryAxis domainAxis = plot.getDomainAxis();

    plot.setDomainAxis(domainAxis);

    ValueAxis rangeAxis = plot.getRangeAxis();
    // 设置最高的一个 Item 与图片顶端的距离
    rangeAxis.setUpperMargin(0.15);
    // 设置最低的一个 Item 与图片底端的距离
    rangeAxis.setLowerMargin(0.15);
    plot.setRangeAxis(rangeAxis);

    BarRenderer3D renderer = new BarRenderer3D();
    renderer.setBaseOutlinePaint(Color.BLACK);
    // 设置 Wall 的颜色
    renderer.setWallPaint(Color.gray);
    // 设置每种水果代表的柱的颜色
    renderer.setSeriesPaint(0, new Color(0, 0, 255));
    renderer.setSeriesPaint(1, new Color(0, 100, 255));
    renderer.setSeriesPaint(2, Color.GREEN);
    // 设置每个地区所包含的平行柱的之间距离
    renderer.setItemMargin(0.1);
    // 显示每个柱的数值,并修改该数值的字体属性
    renderer
            .setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
    renderer.setItemLabelsVisible(true);
    plot.setRenderer(renderer);

    // 设置柱的透明度
    plot.setForegroundAlpha(0.6f);
    // 设置地区、销量的显示位置
    plot.setDomainAxisLocation(AxisLocation.TOP_OR_RIGHT);
    plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);

    try {
        ChartUtilities
                .saveChartAsJPEG(new File("bar.jpg"), chart, 800, 600);
    } catch (IOException exz) {
        System.out.print("....Cant′t Create image File");
    }

}
/**
 * 获取一个柱状图的简单数据集对象
 * 
 * @return
 */
private static CategoryDataset getDataSet() {
    DefaultCategoryDataset dataset = new DefaultCategoryDataset();
    try {
        List&lt;PerfData&gt; list = SAXParseXml.parseXml("D:\\PerfData.xml");
        for (PerfData e: list) {
            dataset.addValue(e.getVal(),e.getName(),null);
    }} catch (Exception e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    return dataset;
}

}


问题补充
哥哥姐姐帮我看看到底是什么问题啊?

[quote="fanyushuai"]哥哥姐姐帮我看看到底是什么问题啊?[/quote]
搞得这么麻烦。试试FusionChart这个。有2D和3D的各种形状的图表,更别说柱形了。而且只要把xml文件配即可。美观又快速,还可以打印。

[quote="osacar"][quote="fanyushuai"]哥哥姐姐帮我看看到底是什么问题啊?[/quote]
搞得这么麻烦。试试FusionChart这个。有2D和3D的各种形状的图表,更别说柱形了。而且只要把xml文件配即可。美观又快速,还可以打印。[/quote]
+1
建议试试FusionCharts,后台生成XML的代码写好,生成各种图表很方便

ls两位头像真养眼!

呵呵 现在ITEYE上流行养眼的头像了么?

用个报表工具吧,类似JasperReport一类的东西

应该上传一下xml
不过建议用报表工具