首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

解析不规则的XML写到Excel中 求指点

2012-12-19 
解析不规则的XML写到Excel中 求指导首先是一个Web项目,算是比较小的了。最近客户又要求加新功能 原本是有很

解析不规则的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.hasNext()) {
   Element good = (Element) iter1.next();
   Element brand = good.element("品牌");//得到good节点下品牌节点


   String b = brand.getText();//得到品牌节点的值
   Attribute att = brand.attribute("hot");//得到品牌节点的属性
   String hot = att.getValue();//得到属性的值
   System.out.println("品牌:"+b+" hot: "+hot);
   Element price = good.element("价格");
   String p = price.getText();
   System.out.println("价格:"+p);
  }
  Element pad = root.element("Pad");
  Iterator iter2 = pad.elementIterator("good");
  while(iter2.hasNext()) {
   Element good = (Element) iter2.next();
   Element brand = good.element("品牌");
   String b = brand.getText();
   Attribute att = brand.attribute("hot");
   String hot = att.getValue();
   System.out.println("品牌:"+b+" hot: "+hot);
   Element price = good.element("价格");
   String p = price.getText();
   System.out.println("价格:"+p);
  }
  
 }
 public static void main(String[] args) throws IOException, DocumentException {
  
  Dom4jxml rw = new Dom4jxml();
  rw.Writer();
  rw.Reader();
 }


[其他解释]
不规则的解析没有用到过,因为不规则所以很繁琐,一大堆代码一个一个的catch吧,

你用的是fusionchart,fusionchart的图表有不同的形式,这些相同形式的图表的xml数据源应该是同种类型的吧,这样就可以分类了,导出excel就是把数据和你的标题对应,建立个复杂的对应。
[其他解释]
引用:
不规则的xml解析,很痛苦的。


Java code?



123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778

public cla……



同感 权当学习了 谢谢
[其他解释]
周末没人来看么...
[其他解释]
引用:
不规则的解析没有用到过,因为不规则所以很繁琐,一大堆代码一个一个的catch吧,

你用的是fusionchart,fusionchart的图表有不同的形式,这些相同形式的图表的xml数据源应该是同种类型的吧,这样就可以分类了,导出excel就是把数据和你的标题对应,建立个复杂的对应。

我尝试一下试试
[其他解释]
好吧 我现在用正则了 
菜鸟技术不行啊 
<dataset seriesName='其他 '><set value='2.6' /> <set value='0.5' /> <set value='0.9' /> </dataset>
我要截取 seriesName='其他 ' 这个 获得 ‘其他’ 有人能给我点可以参考的正则吗 谢谢

热点排行