fanyushuai 2011-12-25 15:07 采纳率: 0%
浏览 321
已采纳

读取并解析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;
}

}


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

6条回答 默认 最新

  • nowdown 2011-12-25 15:07
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 win11家庭中文版安装docker遇到Hyper-V启用失败解决办法整理
  • ¥15 gradio的web端页面格式不对的问题
  • ¥15 求大家看看Nonce如何配置
  • ¥15 Matlab怎么求解含参的二重积分?
  • ¥15 苹果手机突然连不上wifi了?
  • ¥15 cgictest.cgi文件无法访问
  • ¥20 删除和修改功能无法调用
  • ¥15 kafka topic 所有分副本数修改
  • ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
  • ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?