`

用sax解析xml文件把读取的内容写入txt

 
阅读更多

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.OutputStreamWriter;

import java.util.HashSet;

import java.util.Set;


import javax.xml.parsers.ParserConfigurationException;

import javax.xml.parsers.SAXParser;

import javax.xml.parsers.SAXParserFactory;


import org.xml.sax.Attributes;

import org.xml.sax.InputSource;

import org.xml.sax.SAXException;

import org.xml.sax.helpers.DefaultHandler;


import com.incesoft.xmas.commons.StringUtils;


public class MyXml extends DefaultHandler {

java.util.Stack tags = new java.util.Stack();

static Set<String> set = new HashSet<String>();


StringBuffer str = new StringBuffer();


public MyXml() {

super();

}


@Override

public void characters(char[] ch, int start, int length) throws SAXException {

String tag = (String) tags.peek();

if (tag.equals("category")) {

str.append(new String(ch, start, length));

}

}


@Override

public void startElement(String uri, String localName, String name, Attributes attributes)

throws SAXException {

tags.push(name);

}


@Override

public void endElement(String uri, String localName, String name) throws SAXException {

if (name.equals("category")) {

String strs = str.toString().trim();

if (StringUtils.isNotBlank(strs)) {

if (set.add(str.toString().trim())) {

writeTxtFile("D:\\1.txt", str.toString().trim());

System.out.println("|" + str.toString().trim() + "|");

}

}

str.setLength(0);

}

}


public static void main(String[] args) {

File file = new File("D:\\1.txt");

if (!file.exists()) {

try {

file.createNewFile();

} catch (IOException e) {

e.printStackTrace();

}

}

try {

SAXParserFactory sf = SAXParserFactory.newInstance();

SAXParser sp = sf.newSAXParser();

MyXml reader = new MyXml();

sp.parse(new InputSource("D://00.xml"), reader);

} catch (ParserConfigurationException e) {

e.printStackTrace();

} catch (SAXException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}


public static void writeTxtFile(String filename, String info) {

// 先读取原有文件内容,然后进行写入操作

String message = info + "\r\n";

BufferedWriter fw = null;

try {

// fw = new FileWriter(fileName);

OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(filename, true), "GBK");

// out.append(message);

fw = new BufferedWriter(out);

fw.append(message);

fw.flush();

// fw.append(message);

// fw.flush();

} catch (IOException e1) {

e1.printStackTrace();

} finally {

if (fw != null) {

try {

fw.close();

} catch (IOException e2) {

e2.printStackTrace();

}

}

}

}

}

0
0
分享到:
评论

相关推荐

    QT使用SAX读取xml高效-快速.rar

    QT使用SAX读取xml高效-快速.rar SAX(Simple API for XML) 如果你只想读取并显示整个XML文档,那么SAX是很好的选择,因为它提供了比DOM更简单的接口,并且它不需要将整个XML文档一次性读入内存,这样便可以用来读取...

    数据解析,小型 XML 解析库

    Mini-XML 是一个小型 XML 解析库,您可以使用它来读取应用程序中的 XML 数据文件或字符串,而无需大型非标准库 读取 UTF-8 和 UTF-16 并写入 UTF-8 编码的 XML 文件和字符串。 数据存储在链表树结构中,保留 XML ...

    SAX,DOM,PULL解析示例

    此示例介绍了xml的三种解析方式,包括SAX解析,dom解析,pull解析 并介绍了读取文件的方法,怎么写入xml文件等内容,希望对您有所帮助,谢谢。

    android json与xml解析 例子 demo

    android json与xml解析 例子 demo 包含Json和xml解析 其中json包括解析带数组的和不带数组的; xml包括DOM解析和SAX解析

    Android利用Document实现xml读取和写入操作

    本文实例为大家分享了利用Document实现xml读取和写入操作,供大家参考,具体内容如下 首先先来介绍一下什么xml?xml是可扩展标记语言,他可以用来标记数据,定义数据类型。是一种允许用户对自己标记语言进行定义的源...

    XMLDemo_java.rar_XMLDemo_java_java xml_sax_to write xml in java

    用JAVA实现的读取,写入XML的程序,实现了SAX和DOM两种方式。

    Android读写XML.docx

    XML 经常用作 Internet 上的一种数据格式,其文件格式想必大家都比较清楚,在这里我结合Android平台,来说明Android SDK提供的读写XML的package。 首先介绍下Android SDK与Java SDK在读写XML文件方面,数据包之间的...

    xml入门教程/xml入门教程

    2.xml文件是由元素和元素的内容以及属性组成的,一个xml文件中只能有一个根元素,标签和标签的内容加在一起叫作一个元素。xml是大小写 敏感的,只能以字母或下划线开头。 字符转义 &lt; 代表 ", &gt; 代表 "&gt;" , &...

    java轻量级的xml解析jar

    一个轻量级的xml解析器,完全原创,没有dom,也没有sax,只有15K的jar包。应用方便,简单。支持读取xml文档,修改xml文档,写入xml文档。

    1.ASP.NET.2.0.XML.高级编程(第3版) [1/3]

    \r\n 4.2.2 使用XmlReader类读取XML数据的步骤\r\n 4.3 写入XML数据 \r\n 4.4 小结 \r\n第5章 XML数据验证\r\n 5.1 XML验证 \r\n 5.1.1 .NET Framework 2.0支持的验证类型 \r\n 5.1.2 使用XSD模式验证XML数据 ...

    nokogiri:Nokogiri(锯)是一种Rubygem,提供HTML,XML,SAX和Reader解析器,并支持XPath和CSS选择器

    通过将所有文档默认情况下视为不信任来确保默认情况下的安全在基础解析器之上成为合理的薄层,并且不要尝试修复解析器之间的行为差​​异功能概述用于XML和HTML4的DOM解析器用于XML和HTML4的SAX解析器推送XML和...

    POI读写海量Excel(详细解读)

    第二种是事件驱动模式,拿Excel2007来说,其内容采用XML的格式来存储,所以处理excel就是解析XML,而目前使用事件驱动模式解析XML的API是SAX(Simple API for XML),这种模型在读取XML文档时,并没有将整个文档读入...

    C#中基于流的XML文件操作笔记

    XmlReader提供了对于XML数据的快速,非缓存,只进模式的读取器,XmlWriter表示一个编写器,该编写器提供快速,非缓存,只进的方式来生成包含XML数据的流文件。 XmlReader与SAX读取器类似,不过前者是提取模式(只进...

    mxml:微小的XML库

    Mini-XML是一个小型XML解析库,您可以使用它来读取应用程序中的XML数据文件或字符串,而无需使用大型非标准库。 Mini-XML只需要一个“ make”程序和一个与ANSI C兼容的编译器-GCC可以像大多数供应商的ANSI C编译器...

    JDOM(java)使用详解及实例

    1、org.JDOM这个包里的类是你J解析xml文件后所要用到的所有数据类型。 Attribute CDATA Coment DocType Document Element EntityRef Namespace ProscessingInstruction Text 2、org.JDOM.transform在涉及...

    Java核心技术II(第8版)

    2.6.1 使用SAX解析器 2.6.2 使用StAX解析器 2.7 生成XML文档 2.7.1 使用StAX写出XML文档 2.8 XSL转换 第三章 网络 3.1 连接到服务器 3.1.1 套接字超时 3.1.2 因特网地址 3.2 实现服务器 3.2.1 为多个客户端服务 ...

    JAVA_API1.6文档(中文)

    javax.imageio.event Java Image I/O API 的一个包,用于在读取和写入图像期间处理事件的同步通知。 javax.imageio.metadata 用于处理读写元数据的 Java Image I/O API 的包。 javax.imageio.plugins.bmp 包含供...

    Python Cookbook

    12.10 用SAX合并连续的文本事件 458 12.11 使用MSHTML来解析XML或HTML 461 第13章 网络编程 462 引言 462 13.1 通过Socket数据报传输消息 464 13.2 从Web抓取文档 466 13.3 过滤FTP站点列表 467 13.4 通过...

    [Java参考文档]

    javax.imageio.event Java Image I/O API 的一个包,用于在读取和写入图像期间处理事件的同步通知。 javax.imageio.metadata 用于处理读写元数据的 Java Image I/O API 的包。 javax.imageio.plugins.bmp 包含供...

Global site tag (gtag.js) - Google Analytics