`
cutesunshineriver
  • 浏览: 200060 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

使用SAX将特定格式的XML转成CSV文件

阅读更多
直接贴代码
package org.autumn.kettle;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.util.Date;

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

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class LearnSAX {

	public static void main(String[] args) throws Exception, SAXException {
		SAXParserFactory factory = SAXParserFactory.newInstance();
		SAXParser parser = factory.newSAXParser();
		Date before = new Date();
		parser.parse(new File("D:/hotel.xml"), new MyHandler());
		Date after = new Date();
		System.out.println("it takes " + (after.getTime() - before.getTime())
				+ "ms");
	}

}

class MyHandler extends DefaultHandler {

	OutputStreamWriter out = null;

	@Override
	public void startDocument() throws SAXException {
		try {
			out = new OutputStreamWriter(
					new FileOutputStream("D:/xml2csv.csv"), "GBK");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
	}

	@Override
	public void endDocument() throws SAXException {
		try {
			out.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	@Override
	public void startElement(String uri, String localName, String qName,
			Attributes attributes) throws SAXException {
	}

	@Override
	public void endElement(String uri, String localName, String qName)
			throws SAXException {
		if (qName.equalsIgnoreCase("row")) {
			try {
				out.write("\r\n");
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

	@Override
	public void characters(char ch[], int start, int length)
			throws SAXException {
		String s = new String(ch, start, length);
		if (!s.trim().isEmpty())
			try {
				out.write(s + ",");
			} catch (IOException e) {
				e.printStackTrace();
			}
	}

}


输入的XML文档:
<?xml version="1.0" encoding="UTF-8"?>
<Rows>
 <Row><domain>YJ</domain> <hotelname>阳江猾令新另赂宾馆</hotelname> <hotelno>230016</hotelno> <lxr>邹垮龚</lxr> <tel>23238687</tel> <address>阳江市铁核估金伎区0号</address> <ssq>2</ssq> <bz/> </Row>
 <Row><domain>QY</domain> <hotelname>清远埔沃睬储酒店</hotelname> <hotelno>443171</hotelno> <lxr>柏弗蚊</lxr> <tel>21289491</tel> <address>清远市陨促醛映区49号</address> <ssq>3</ssq> <bz/> </Row>
</Rows>


输出的CSV文件:
YJ,阳江猾令新另赂宾馆,230016,邹垮龚,23238687,阳江市铁核估金伎区0号,2,
QY,清远埔沃睬储酒店,443171,柏弗蚊,21289491,清远市陨促醛映区49号,3,



分享到:
评论

相关推荐

    XML数据转换

    在处理XML数据时,我们经常需要进行数据转换,以便将XML格式的数据转化为其他格式,如JSON、CSV或者数据库记录。下面将详细讨论XML数据转换的相关知识点。 一、XML的基本结构与特性 XML是一种自描述性的文本格式,...

    XML阅读器(可导出txt&excel;)

    XML阅读器能将XML数据转换成Excel表格,这意味着它可能利用了Excel的COM接口或者CSV格式作为中间桥梁,因为CSV(Comma-Separated Values)是常见的导入到Excel的数据格式。 6. **VC++开发**:从文件名(如`.cpp`和`...

    Xml与javaBean互转.zip

    在Java编程中,XML经常被用作数据交换格式,特别是在处理配置文件、Web服务或者序列化对象时。JavaBean则是一种符合特定规范的Java类,通常用于封装数据和业务逻辑,它们可以方便地被其他组件或框架使用。 JavaBean...

    解析Excel和XML

    3. **生成XML**:使用XML库生成符合特定模式的XML文件。 此外,还可以用Excel作为数据输入界面,用户填写后,通过脚本或程序自动转换成XML,便于数据交换或导入其他系统。 在博客链接中(已省略),可能探讨了如何...

    自己制作的可以解析一切xml的工具

    可以按照特定格式(如JSON、CSV)输出,或者直接以原始的XML结构保存。 6. **关闭文件**:确保在操作完成后关闭输入和输出文件,防止数据丢失。 总之,制作这样一个工具涉及了XML解析、内存管理和文件操作等多方面...

    XmlAnalysis.zip

    它可以将XML转换为HTML、另一个XML格式,甚至是文本或CSV文件。 9. **编程库与API**:在不同编程语言中,如Java(JAXB, DOM, SAX, XSLT),C#(System.Xml),Python(ElementTree,lxml),PHP(DOMDocument),都...

    一组用于处理AUTOSAR XML 文件的 Python 模块

    5. **转换工具**:可能还包含一些工具,用于将AUTOSAR XML数据与其他格式(如JSON、CSV)相互转换,方便数据交换和分析。 6. **错误处理**:考虑到XML文件可能存在的格式错误,库会包含错误检测和处理机制,确保在...

    Dom4j例子,可以解析大部分的XML

    在TestDom4j项目中,可能包含一个简单的Java程序,演示了如何使用Dom4j解析XML文件、查找特定元素、修改元素内容,并将结果写回XML。这个例子对于初学者来说非常有帮助,因为它展示了Dom4j在实际应用中的基本用法。...

    xml java tutorial

    本文将深入探讨如何利用Java处理XML文档,通过使用Document Object Model (DOM),Simple API for XML (SAX),以及Extensible Stylesheet Language Transformations (XSLT)等技术来解析、操作和转换XML数据。...

    JAVA读XML:sax,dom,jdom,dom4j的比较以及选择.doc

    DOM4J还支持XPath查询,可以使用XPath表达式定位XML文档中的特定节点。此外,它还提供了解析XML文档、修改XML结构、转换XML到其他格式(如HTML或CSV)等功能。 在选择XML解析方式时,SAX适合大文件,因为它采用...

    学生信息管理系统(基于XML)

    信息更新是对XML文档进行修改,而导出报表则可能需要将XML数据转换为更友好的格式,如CSV或PDF,这可以通过Java的转换库如XSLT(Extensible Stylesheet Language Transformations)来完成。 在实际开发中,为了保证...

    工作草案征求意见单-XML使用指南.doc

    - **SAX(Simple API for XML)**:一种事件驱动的解析器模型,适用于处理大型XML文档,它以流式方式读取XML,仅在遇到特定元素或属性时触发回调函数。 - **DOM(Document Object Model)**:将XML文档表示为一棵...

    vtd-xml+教程+源码+事例+集合.zip

    - 数据转换:将XML文档转换为其他格式,如JSON或CSV。 - 数据修改:更新XML文档的元素值,添加或删除元素。 6. VTD-XML源码分析: 通过阅读源码,可以理解其内部数据结构和算法,有助于定制化开发和性能优化。...

    Fortify-XML-Converter-源码.rar

    Fortify XML Converter是一款工具,主要用于将Fortify Software Security Center(FSSC)生成的XML报告转换成其他格式,便于分析和处理。这个压缩包“Fortify-XML-Converter-源码.rar”包含了该工具的源代码,对于...

    XML大全

    通过XSLT,我们可以将XML数据转换成HTML,便于网页展示,或者转换成其他格式,如CSV,适应不同的应用场景。 XML大全的学习涵盖XML的基础语法、解析方法、验证机制(如DTD、XML Schema)、XPath(XML Path Language...

    JAVA操作XMLDOM4j简单教程

    除了基本的读取、遍历和修改,它还包括了创建XML文档、转换XML到其他格式(如HTML或CSV)、处理命名空间、解析和生成XML Schema(XSD)等能力。此外,DOM4j还支持事件监听和访问者模式,使你可以根据需要定制XML处理...

    dom4j-xml.rar_DOM4J

    DOM则是将整个XML文件加载到内存中的树形结构,便于进行随机访问。 2. **创建XML文档**:DOM4J提供了API来创建新的XML文档,包括添加元素、属性、文本节点等。 3. **修改XML文档**:通过DOM4J,可以方便地对XML...

    java_test4

    在Java中,我们可以使用DOM(Document Object Model)、SAX(Simple API for XML)或StAX(Streaming API for XML)来解析XML文件。"xmlfind.java"可能实现了XML数据的搜索功能,比如查找特定元素、属性或者值。DOM...

    将OICQ数据转成MYSQL数据

    这通常涉及到文件I/O操作和解析特定的文件格式。例如,如果数据是XML格式,可以使用DOM、SAX或lxml库来解析;如果是二进制,可能需要自定义解码算法。 2. 数据清洗:提取出的数据可能存在冗余、错误或不完整的情况...

Global site tag (gtag.js) - Google Analytics