怎么使用java导出大数据为xml文件

怎么使用java导出大数据为xml文件,第1张

dom4j可以试试,不知道你的数据量有多大,如果太大的话,我没试过

xml文件是有规律的,你可以把要导出的数据构造一下,

我有个简单的代码

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()

    }

}

然而从xml文件中解析以后的数据收集可以用SAX试试看

我这里有个简单的例子

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=0i<atts.getLength()i++){

System.out.println("属性值:"+atts.getValue(i))

}

}

public void endElement(String namespaceURI,String localName,String qName)throws SAXException{

System.out.println("结束元素:"+qName)

}

}

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())

}

}

一个XML文档,可以先构造一个DOM,然后将DOM转化为xml序列,输出或者生成文件。package test

import java.io.ByteArrayOutputStream

import java.io.File

import java.io.FileOutputStream

import javax.xml.parsers.DocumentBuilder

import javax.xml.parsers.DocumentBuilderFactory

import javax.xml.transform.Transformer

import javax.xml.transform.TransformerFactory

import javax.xml.transform.dom.DOMSource

import javax.xml.transform.stream.StreamResult

import org.w3c.dom.Document

import org.w3c.dom.Element

public class Test {

public static void generate(){

try {

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance()

DocumentBuilder builder = factory.newDocumentBuilder()

Document document = builder.newDocument()

document.setXmlVersion("1.0")

document.setXmlStandalone(true)

Element root = document.createElement_x("MobileNet") //创建根节点

document.appendChild(root) //将根节点添加到Document对象中

Element pageElement = document.createElement_x("page")//设置第一个page元素到

pageElement.setAttribute("name", "list.jsp")//设置page节点的name属性

Element methodElement = document.createElement_x("method") //设置method节点

methodElement.setTextContent("get") //给method设置值

pageElement.appendChild(methodElement)//添加method节点到page节点内

Element displayElement = document.createElement_x("display") //设置method节点

displayElement.setTextContent("list撒旦发放")//给display设置值

pageElement.appendChild(displayElement) //添加display节点到page节点内

Element request_paramElement = document.createElement_x("request_param")

request_paramElement.setTextContent("request_param1|request_param2")

pageElement.appendChild(request_paramElement)

root.appendChild(pageElement)

pageElement = document.createElement_x("page") //设置第二个page元素到

pageElement.setAttribute("name", "content.jsp")//设置page节点的name属性

methodElement = document.createElement_x("method")

methodElement.setTextContent("post")

pageElement.appendChild(methodElement)

displayElement = document.createElement_x("display")

displayElement.setTextContent("content")

pageElement.appendChild(displayElement)

Element url_titleElement = document.createElement_x("url_title") //设置url_title节点

url_titleElement.setTextContent("title,publisher,published_calendar")//给url_title设置值

pageElement.appendChild(url_titleElement)//添加url_title节点到page节点内

root.appendChild(pageElement)//将page段加人根节点内

TransformerFactory transFactory = TransformerFactory.newInstance()//开始把Document映射到文件

Transformer transFormer = transFactory.newTransformer()

DOMSource domSource = new DOMSource(document) //设置输出结果

File file = new File("MobileNetRule.xml")//生成xml文件

if (!file.exists()) {

file.createNewFile()

}

FileOutputStream out = new FileOutputStream(file) //文件输出流

StreamResult xmlResult = new StreamResult(out) //设置输入源

transFormer.transform(domSource, xmlResult) //输出xml文件

System.out.println(file.getAbsolutePath()) //测试文件输出的路径

TransformerFactory tf = TransformerFactory.newInstance()

Transformer t = tf.newTransformer()

t.setOutputProperty("{/encoding/}","GB2312/")

ByteArrayOutputStream boc = new ByteArrayOutputStream()

t.transform(new DOMSource(document), new StreamResult(boc))

String xmlstring = boc.toString()

System.out.println(xmlstring)

} catch (Exception e) {

e.printStackTrace()

}

}

public static void main(String[] args){

Test.generate()

}

}

// 给你一个例子,你参考下

// java通过dom读写xml文件

 

/*要读的xml文件

<?xml version="1.0" encoding="GB2312"?>

<学生花名册>

  <学生 性别 = "男">

      <姓名>李华</姓名>

      <年龄>14</年龄>

  </学生>

  <学生 性别 = "男">

      <姓名>张三</姓名>

      <年龄>16</年龄> 

 </学生>

</学生花名册>  

*/ 

 

package xml

import java.io.FileOutputStream

import java.io.OutputStreamWriter

import java.io.Writer

import java.util.Iterator

import java.util.Vector

import javax.xml.parsers.DocumentBuilder

import javax.xml.parsers.DocumentBuilderFactory

import javax.xml.transform.OutputKeys

import javax.xml.transform.Result

import javax.xml.transform.Source

import javax.xml.transform.Transformer

import javax.xml.transform.TransformerConfigurationException

import javax.xml.transform.TransformerException

import javax.xml.transform.TransformerFactory

import javax.xml.transform.dom.DOMSource

import javax.xml.transform.stream.StreamResult

import org.w3c.dom.Document

import org.w3c.dom.Element

import org.w3c.dom.Node

import org.w3c.dom.NodeList

import org.w3c.dom.Text

public class DomTest {

 Vector students_Vector

 private Vector readXMLFile(String file) throws Exception {

  DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance()

  DocumentBuilder builder = dbf.newDocumentBuilder()

  Document doc = builder.parse(file) // 获取到xml文件

  // 下面开始读取

  Element root = doc.getDocumentElement() // 获取根元素

  NodeList students = root.getElementsByTagName_r("学生")

  students_Vector = new Vector()

  for (int i = 0 i < students.getLength() i++) {

   // 一次取得每一个学生元素

   Element ss = (Element) students.item(i)

   // 创建一个学生的实例

   student stu = new student()

   stu.setSex(ss.getAttribute("性别"))

   NodeList names = ss.getElementsByTagName_r("姓名")

   Element e = (Element) names.item(0)

   Node t = e.getFirstChild()

   stu.setName(t.getNodeValue())

   NodeList ages = ss.getElementsByTagName_r("年龄")

   e = (Element) ages.item(0)

   t = e.getFirstChild()

   stu.setAge(Integer.parseInt(t.getNodeValue()))

   students_Vector.add(stu)

  }

  return students_Vector

 }

 // 写入xml文件

 public static void callWriteXmlFile(Document doc, Writer w, String encoding) {

  try {

   Source source = new DOMSource(doc)

   Result result = new StreamResult(w)

   Transformer xformer = TransformerFactory.newInstance()

     .newTransformer()

   xformer.setOutputProperty(OutputKeys.ENCODING, encoding)

   xformer.transform(source, result)

  } catch (TransformerConfigurationException e) {

   e.printStackTrace()

  } catch (TransformerException e) {

   e.printStackTrace()

  }

 }

 private void writeXMLFile(String outfile) {

  DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance()

  DocumentBuilder builder = null

  try {

   builder = dbf.newDocumentBuilder()

  } catch (Exception e) {

  }

  Document doc = builder.newDocument()

  Element root = doc.createElement("学生花名册")

  doc.appendChild(root) // 将根元素添加到文档上

  // 获取学生信息

  for (int i = 0 i < students_Vector.size() i++) {

   student s = (student) students_Vector.get(i)

   // 创建一个学生

   Element stu = doc.createElement("学生")

   stu.setAttribute("性别", s.getSex())

   root.appendChild(stu)// 添加属性   

   // 创建文本姓名节点

   Element name = doc.createElement("姓名")

   stu.appendChild(name)

   Text tname = doc.createTextNode(s.getName())

   name.appendChild(tname)

   

   //创建文本年龄节点

   Element age = doc.createElement("年龄")

   stu.appendChild(age) // 将age添加到学生节点上

   Text tage = doc.createTextNode(String.valueOf(s.getAge()))

   age.appendChild(tage) // 将文本节点放在age节点上

  }

  try {

   FileOutputStream fos = new FileOutputStream(outfile)

   OutputStreamWriter outwriter = new OutputStreamWriter(fos)

   // ((XmlDocument)doc).write(outwriter) //出错!

   callWriteXmlFile(doc, outwriter, "gb2312")

   outwriter.close()

   fos.close()

  } catch (Exception e) {

   e.printStackTrace()

  }

 }

 public static void main(String args[]) {

  String str = "xml/student.xml"

  DomTest t = new DomTest()

  try {

   Vector v = t.readXMLFile(str)

   Iterator it = v.iterator()

   while (it.hasNext()) {

    student s = (student) it.next()

    System.out.println(s.getName() + "\t" + s.getAge() + "\t"

      + s.getSex())

   }

  } catch (Exception e) {

   e.printStackTrace()

  }

  String outfile = "xml/stucopy.xml"

  t.writeXMLFile(outfile)

 }

}

class student{

 private String sex

 private String name

 private int age

 public int getAge() {

  return age

 }

 public void setAge(int age) {

  this.age = age

 }

 public void setSex(String s){sex=s}

 public String getSex(){return sex}

 public void setName(String n){name=n}

 public String getName(){return name}

 }


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11901725.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存