`
bcworld
  • 浏览: 39288 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

dom方式解析XML输出为CSV

    博客分类:
  • XML
阅读更多

  之前一篇 借助DOM4J完成了解析工作,下面采用原始的DOM方式完成相同的工作,如果运行不了,你可能还需要导入xalan.jar包。

import java.io.File;
import java.io.PrintWriter;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.apache.xpath.XPathAPI;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class DomTest {
	public static void main(String[] args) throws Exception {
		DocumentBuilderFactory domFactory = DocumentBuilderFactory
				.newInstance();
		DocumentBuilder domBuilder = domFactory.newDocumentBuilder();
		Document doc = domBuilder.parse(new File("I:\\test2.xml"));
		//XPathAPI需要xalan.jar支持
		NodeList recordlist=XPathAPI.selectNodeList(doc, "records/record");
		PrintWriter pWriter=new PrintWriter("I:\\hello2.csv");
		String tempString;
		NodeList phyNodeList=XPathAPI.selectNodeList(doc, "records/record[1]/field/@lname");
		for (int i = 0; i < phyNodeList.getLength(); i++) {
			tempString=new String(phyNodeList.item(i).getNodeValue().getBytes("UTF-8"),"UTF-8");
			if (i==phyNodeList.getLength()-1) {
				pWriter.print(tempString);
			}else {
				pWriter.print(tempString+",");
			}
		}
		pWriter.println();
		for(int i=0;i<recordlist.getLength();i++){
			NodeList fieldlist=XPathAPI.selectNodeList(recordlist.item(i), "field");
			for (int j = 0; j < fieldlist.getLength(); j++) {
				Element element=(Element)fieldlist.item(j);
				tempString=new String (element.getFirstChild().getNodeValue().getBytes("UTF-8"),"UTF-8");
				if (j==fieldlist.getLength()-1) {
					pWriter.print(tempString);
				}else
				pWriter.print(tempString+",");
			}
			pWriter.println();
		}
		pWriter.close();
	}
}

 运行后同样达到预期效果:

分享到:
评论

相关推荐

    将xml文件转换成csv格式

    2. **解析XML文件**:使用XML解析器,如Python的`ElementTree`库,Java的`JDOM`或`DOM4J`,或者JavaScript的`DOMParser`,来读取和解析XML文件。解析器能够将XML文档转化为可操作的对象结构。 3. **构建CSV数据模型...

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

    **Dom4j详解:解析XML的强大工具** Dom4j是一个开放源码的Java库,它提供了灵活且功能强大的API来处理XML文档。在Java世界中,XML作为一种数据交换格式广泛应用于各种应用程序,如配置文件、数据传输、文档存储等。...

    java Dom4j 无敌连环解析XML工具类

    在本教程中,我们将深入探讨如何使用DOM4J来解析XML文件,并创建一个无敌连环解析工具类。 首先,我们需要了解XML的基本概念。XML(可扩展标记语言)是一种标记语言,常用于数据交换和存储。它的结构化特性使其非常...

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

    本文将深入探讨如何使用自定义工具解析XML文件,并将其内容保存到内存,最终输出为文本文件。 首先,理解XML的基本结构至关重要。XML文件由一系列元素构成,每个元素由开始标签、元素内容和结束标签组成。例如,`...

    java实现csv 转 xml

    使用`java.util.Scanner`或正则表达式解析CSV,然后使用DOM(文档对象模型)或SAX(简单API for XML)创建XML文档。 以下是一个简化的自定义实现过程: 1. 读取CSV文件:使用`BufferedReader`逐行读取文件,将每行...

    解析Excel和XML

    1. **DOM解析**:如Python的xml.dom.minidom库,它构建了一个树形结构,允许遍历整个XML文档。 2. **SAX解析**:如Python的xml.sax模块,它只在遇到元素、属性等时触发事件,减少内存占用。 3. **XPath和XSLT**:...

    dom4j-xml.rar_DOM4J

    1. **解析XML文档**:DOM4J支持SAX和DOM两种解析方式。SAX是事件驱动的解析器,适用于处理大型XML文件;DOM则是将整个XML文件加载到内存中的树形结构,便于进行随机访问。 2. **创建XML文档**:DOM4J提供了API来...

    cgi.tar.gz_CGI解析xml

    在"cgi.tar.gz_CGI解析xml"这个文件中,我们关注的是如何通过CGI来解析XML文件。 XML文件结构清晰,具有自描述性,广泛应用于数据交换、配置文件、文档存储等领域。然而,浏览器默认并不直接解析XML,这就需要借助...

    dom4j-2.0.2.rar 解析jar下载

    在XML解析方面,DOM4J提供了两种主要的解析方式:SAX(Simple API for XML)和DOM。SAX是一种事件驱动的解析方式,适用于处理大型XML文件,因为它不需要将整个文档加载到内存中。DOM则是一种树形结构的解析方式,...

    dom4j是一个极其优秀及简单于一体的xml解析器 开源的

    4. **转换和序列化**:DOM4J不仅可以解析XML,还可以将XML文档转换为其他格式,如Java对象、HTML、CSV等。同时,它也可以将Java对象序列化为XML,实现数据的保存和传输。 5. **扩展性**:DOM4J设计时考虑了扩展性,...

    XML解析实例

    这些库提供了方便的方法来解析XML文档,例如在Python中,`ElementTree`的`parse()`函数可以用于DOM解析,而`xml.sax.parse()`可以用于SAX解析。 在实际应用中,XML解析还包括处理命名空间(Namespaces)、验证XML...

    JAVA操作XMLDOM4j简单教程

    1. **读取和解析XML文档**: 使用`SAXReader`可以从文件中读取XML文档。`SAXReader`使用事件驱动的SAX解析器,效率较高。以下代码展示了如何读取XML文件并获取`Document`对象: ```java public Document readXML...

    kai 开源 xml 解析kai 开源 xml 解析

    这些API通常包括解析XML文档、遍历XML树、获取元素属性和文本内容等功能。 3. **内存管理**:Kai库可能采用了流式解析或DOM解析策略。流式解析允许按需处理XML数据,减少内存占用;DOM解析则将整个XML文档加载到...

    Dom4j学习资料集锦

    2. **DOM解析**:DOM4J也提供了DOM解析器,但不同于标准DOM API,DOM4J的DOM模型更加易于使用。 3. **StAX解析**:DOM4J通过Java Streaming API for XML(StAX)提供了流式解析,适合处理连续的XML数据流。 **三、...

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

    XML阅读器是一款专门用于处理XML(eXtensible Markup Language)文件的应用程序,它具备了导入XML文件、解析XML文档并以二维结构显示在列表控件中的功能。XML是一种标记语言,广泛应用于数据交换、配置文件存储等...

    android xml 工具

    1. **XML解析**:工具首先读取XML文件,然后使用Java的DOM解析器(如org.w3c.dom库中的DocumentBuilderFactory和DocumentBuilder)来解析XML文档。DOM解析器将整个XML文件加载到内存中,形成一个可操作的树形结构,...

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

    此外,它还提供了解析XML文档、修改XML结构、转换XML到其他格式(如HTML或CSV)等功能。 在选择XML解析方式时,SAX适合大文件,因为它采用事件驱动,只占用有限的内存;DOM一次性加载整个文档,适用于小文件或需要...

    表格转csv-xml-json

    将表格转换为XML,可能需要编写代码来解析表格数据并构建相应的XML结构。Python的xml.etree.ElementTree库或JavaScript的DOM API是实现这一转换的常见选择。 JSON是互联网上最常用的数据交换格式之一,它以键值对的...

    XML数据转换

    将XML转换为CSV,需要解析XML元素,然后按照CSV的格式重新组织数据。这个过程可能涉及到递归遍历XML树、处理嵌套数据以及确定列名。 五、XML到数据库记录转换 XML可以被用来导入或导出数据库记录,如SQL Server的...

    jar包Dom4j

    2. **SAX解析**: DOM4J也支持SAX解析器,这种解析方式适用于处理大型XML文件,因为它不需要一次性加载整个文件到内存中。这种方式以事件驱动,逐行读取XML,节省了内存资源。 3. **StAX解析**: StAX提供了另一种...

Global site tag (gtag.js) - Google Analytics