如何使用java导出大数据为xml文件

wuy13862574600 2011-09-28 08:51:14
如何使用java导出大数据为xml文件
如何导入。

数据容量可能 有几十M, 使用xstream进行导入导出,总是出现溢出。

请教如何实现比较好?
...全文
525 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
txtsteve 2014-05-04
  • 打赏
  • 举报
回复
有分段导出的例子吗包括代码
nazumi 2011-09-28
  • 打赏
  • 举报
回复
用DOM4J 啥的比这个简单多拉。.何必用这些
安心逍遥 2011-09-28
  • 打赏
  • 举报
回复
javax.xml.stream

如果是oracle数据库,可以在数据库里面直接把数据生成xml格式的

祝楼主好运啊
feifeikub 2011-09-28
  • 打赏
  • 举报
回复

package com.test.xml;

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

public class Books {
/**
* @param args
*/
public static void main(String[] args) throws Exception{
// TODO 自动生成方法存根
SAXParserFactory factory=SAXParserFactory.newInstance();
SAXParser parser=factory.newSAXParser();
parser.parse("booksamp.xml",new SAXParseHandler());

}
}

feifeikub 2011-09-28
  • 打赏
  • 举报
回复
然而从xml文件中解析以后的数据收集可以用SAX试试看
我这里有个简单的例子,希望对LZ有用


package com.test.xml;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class SAXParseHandler extends DefaultHandler{
public void startDocument()throws SAXException{
System.out.println("起始文挡");
}
public void endDocument()throws SAXException{
System.out.println("结束文挡");
}
public void characters(char[] ch,int start,int length)throws SAXException{
String charString=new String(ch,start,length);
System.out.println("字符:"+charString);
}
public void startElement(String namespaceURI,String localName,String qName,Attributes atts)throws SAXException{
System.out.println("起始元素:"+qName);
for(int i=0;i<atts.getLength();i++){
System.out.println("属性值:"+atts.getValue(i));
}
}
public void endElement(String namespaceURI,String localName,String qName)throws SAXException{
System.out.println("结束元素:"+qName);
}
}


feifeikub 2011-09-28
  • 打赏
  • 举报
回复
dom4j可以试试,不知道你的数据量有多大,如果太大的话,我没试过
xml文件是有规律的,你可以把要导出的数据构造一下,

我有个简单的代码,在这分享一下,希望对LZ有用


package com.test.xml;

import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
public class Dom4JXML {

public void createXML() {
//用工厂类创建一个document实例
Document doc = DocumentHelper.createDocument();
//创建根元素emps
Element rootEle = doc.addElement("emps");
//添加注释
rootEle.addComment("这是一个dom4j生成的xml文件");
//emps根节点下创建一个emp节点
Element empEle = rootEle.addElement("emp");
//emp添加属性id="1"
empEle.addAttribute("id", "1");
//emp节点下创建一个name节点
Element nameEle = empEle.addElement("name");
//name节点下创建一个文本节点zhangsan
nameEle.setText("zhangsan");
//再为name节点创建一个兄弟节点
Element sexEle = empEle.addElement("sex");
sexEle.setText("man");
//将document中的内容写入文件中
try {
Writer out = new FileWriter("F:\\emps.xml");
//格式化输出,类型IE浏览一样
OutputFormat format = OutputFormat.createPrettyPrint();
//OutputFormat format = OutputFormat.createCompactFormat();
format.setEncoding("UTF-8");
//创建写出对象
XMLWriter writer = new XMLWriter(out,format);
writer.write(doc);
writer.close();
System.out.println("生成emps.xml成功。");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("失败了。");
}
}

public static void main(String[] args) {
new Dom4JXML().createXML();
}
}
softroad 2011-09-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ohxushichao 的回复:]

- -~! lz的昵称.. 我打打试试哦.
[/Quote]

lz是用框架导入的还是,详细点。
小绵羊 2011-09-28
  • 打赏
  • 举报
回复
。。分段导出额。。。。
  • 打赏
  • 举报
回复
- -~! lz的昵称.. 我打打试试哦.
huntor 2011-09-28
  • 打赏
  • 举报
回复
javax.xml.stream 包
huntor 2011-09-28
  • 打赏
  • 举报
回复
使用 jaxb 。
wuy13862574600 2011-09-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ohxushichao 的回复:]

- -~! lz的昵称.. 我打打试试哦.
[/Quote]

随便打啊。。被人骂不要怪我啊。。N年前的手机号码了,不知道现在那个号属于谁了。。
wuy13862574600 2011-09-28
  • 打赏
  • 举报
回复
之前使用的是xstream,直接将对象导出。一行代码就ok了。
但是当对象比较大时,到溢出了。
到导出的是一个很复杂的对象,要采取标签解析估计太复杂了。
不仅仅支持oracle,要支持所有主流数据库oracle db2 sqlserver 等。。

ghostdomgu 2011-09-28
  • 打赏
  • 举报
回复
用用apache的poi组件试试
zty5678 2011-09-28
  • 打赏
  • 举报
回复
避免使用太多递归。。。。。

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧