日期:2014-05-19  浏览次数:20625 次

解析不规则的XML写到Excel中 求指导
首先是一个Web项目,算是比较小的了。最近客户又要求加新功能 原本是有很多fusionchart展示的数据,用户要求可以将这些数据导出到Excel中。这些fusionchart在做的时候压根就没考虑到导出,而且用的是fusionchart-free,现在大约有50多个图表要求导出数据。展示的数据大多数都是由多条SQL拼接起来的,要是在后台导出结果集的话逻辑怕是很复杂,而且要针对每一个fusionchart单独写方法,工作量会很大。我现在的思路是能不能解析fusionchart的XML数据文件,取得数据写到Excel中。之前在做的时候XML数据文件是以String字符串的形式传到前台的,这个很容易获取。不过fusionchart的数据文件是不规则XML文件(现在就是一坨很长的字符串),我不知道该怎么解析获取其中的数据。求大神指点迷津,能给点经验或者有可参考的代码最好了 先谢谢各位了
------最佳解决方案--------------------
不规则的xml解析,很痛苦的。

public class Dom4jxml {
 //写XML文件
 public void Writer() throws IOException {
  Document doc = DocumentHelper.createDocument();
  Element goods = doc.addElement("goods");//添加根节点
  Element phone =  goods.addElement("Phone");//根节点下添加Phone节点
  Element good1 = phone.addElement("good");//Phone节点下添加good节点
  Element brand1 = good1.addElement("品牌");
  brand1.setText("三星");//设置节点值
  brand1.addAttribute("hot","yes");//设置节点属性
  Element price1 = good1.addElement("价格");
  price1.setText("3000");
  Element good2 = phone.addElement("good");
  Element brand2 = good2.addElement("品牌");
  brand2.setText("苹果");
  brand2.addAttribute("hot","yes");
  Element price2 = good2.addElement("价格");
  price2.setText("4000");
  Element pad = goods.addElement("Pad");
  Element good3 = pad.addElement("good");
  Element brand3 = good3.addElement("品牌");
  brand3.setText("苹果");
  brand3.addAttribute("hot","yes");
  Element price3 = good3.addElement("价格");
  price3.setText("4500");


  FileWriter fw = new FileWriter("goods.xml");
                 OutputFormat format = OutputFormat.createPrettyPrint();//缩减型格式
                 //OutputFormat format = OutputFormat.createCompactFormat();//紧凑型格式
                 format.setEncoding("UTF-8");//设置编码
                 //format.setTrimText(false);//设置text中是否要删除其中多余的空格
                 XMLWriter xw = new XMLWriter(fw, format);
                 xw.write(doc);
                 xw.close();
  
 }
 //读XML文件
 public void Reader() throws DocumentException {
  
  SAXReader sr = new SAXReader();
  Document doc = sr.read(new File("goods.xml"));
  Element root = doc.getRootElement();//得到根节点
  Element phone = root.element("Phone");//得到根节点下Phone节点
  Iterator iter1 = phone.elementIterator("good");//遍历Phone节点下所有good节点
  while(iter1.has