黑马程序员技术交流社区

标题: 生成XML文件时,数据太多导致溢出,怎么办? [打印本页]

作者: 杨冉    时间: 2013-3-14 16:39
标题: 生成XML文件时,数据太多导致溢出,怎么办?
主程序大概思路就是这样,以credit标签外边套一层cbrc标签为例演示下我的想法:
  1. import java.io.File;
  2. import java.io.FileOutputStream;
  3. import java.io.OutputStream;

  4. import org.jdom.*;
  5. import org.jdom.output.XMLOutputter;

  6. public class XmlFileGen {
  7.         public static void main(String[] args){
  8.                 try{
  9.                         Element root = new Element("cbrc");
  10.                         root.setAttribute(new Attribute("reportnumber","01"));
  11.                         root.setAttribute(new Attribute("bankcode","XXXXXXXXXXXXXXXXX"));
  12.                         root.setAttribute(new Attribute("bankname","XX银行"));
  13.                         root.setAttribute(new Attribute("reportdate","201303"));
  14.                         root.setAttribute(new Attribute("version",""));
  15.                         Document document = new Document(root);
  16.                         Element basicElement = new Element("credit");
  17.                         Element customerType = new Element("customerType").addContent("1");
  18.                         Element customerName = new Element("customerName").addContent("XX能源集团");
  19.                         Element customerCode = new Element("customerCode").addContent("XX-XXXX");
  20.                         Element nationalityCode = new Element("nationalityCode").addContent("CHN");
  21.                         basicElement.addContent(customerType);
  22.                         basicElement.addContent(customerName);
  23.                         basicElement.addContent(customerCode);
  24.                         basicElement.addContent(nationalityCode);
  25.                         root.addContent(basicElement);
  26.                         org.jdom.output.Format format=org.jdom.output.Format.getPrettyFormat();
  27.                         XMLOutputter output = new XMLOutputter(format.setIndent("    "));
  28.                         OutputStream os = new FileOutputStream(new File("dd.xml"));
  29.                         output.output(document, os);
  30.                 }catch(Exception e){
  31.                         e.printStackTrace();
  32.                 }
  33.         }
  34. }
复制代码
生成XML结果如下:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <cbrc reportnumber="01" bankcode="XXXXXXXXXXXXXXXXX" bankname="XX银行" reportdate="201303" version="">
  3.     <credit>
  4.         <customerType>1</customerType>
  5.         <customerName>XX能源集团</customerName>
  6.         <customerCode>XX-XXXX</customerCode>
  7.         <nationalityCode>CHN</nationalityCode>
  8.     </credit>
  9. </cbrc>
复制代码
这样生成一个简单的XML文件当然没有问题,但实际上一个XML文件里边经常会有几万个标签。。。用这样的方法生成XML文件非常容易就会溢出了,那我们该如何解决呢?

作者: 陈腾跃_2013    时间: 2013-3-14 18:09
本帖最后由 陈腾跃_2013 于 2013-3-14 18:18 编辑

恩,个人觉得这个以后应该使用数据库+bean的方式来存储吧。XML在这个方面只是起演示作用,或者作为配置文件来使用。
(就是说XML本来就不是用来大量存储数据的)
如果允许不用XML的话,以后好像还有一种使用配置文件存储信息的选择。
即使用“.properties”文件来“模仿”数据库。
(还没学到,呵呵,总之用数据库解决吧)
有说错的地方,欢迎大家拍砖斧正。
作者: 张善颖    时间: 2013-3-16 21:26
建议使用sax解析 ,dom解析会将所有的数据读入内存 。或者进行增加硬件设施,或优化jvm等操作。
作者: 陈丽莉    时间: 2013-3-17 13:31
若仍有问题,请继续追问或完善问题;没问题的话,请将帖子分类改成【已解决】~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2