`

用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
分享到:
评论

相关推荐

    Java SAX解析Xml文档Demo

    Java SAX(Simple API for XML)解析器是一种基于事件驱动的XML解析方式,它不将整个XML文档加载到内存中,而是逐行读取,当遇到某个事件(如开始标签、结束标签等)时,会触发相应的事件处理器方法。这种方式节省了...

    SDcard数据访问SAX解析XML文件

    总的来说,SAX解析XML文件结合SD卡数据访问是Android开发中的常见操作,能够实现高效的文件解析和存储,尤其适用于资源有限的移动设备环境。通过以上步骤和注意事项,开发者可以灵活地处理XML数据并在SD卡上进行存取...

    Java解析XML文档(二):sax读取xml文件导出excel

    本文将深入讲解如何使用SAX(Simple API for XML)解析XML文档,并将解析结果导出到Excel文件中。SAX是一种事件驱动的解析方式,相比DOM(Document Object Model)解析,它更节省内存,适用于处理大型XML文件。 ...

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

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

    XML和属性文件读取和写入

    ### XML读取 在Java中,可以使用DOM(Document Object Model)、SAX(Simple API for XML)和StaX(Streaming API for XML)等API来解析XML。DOM将整个XML文档加载到内存中,形成一个树形结构,适合小型XML文件。...

    java用sax实现重写xml文件内容

    在Java中,SAX解析器不直接支持修改XML文件,但我们可以使用一种间接的方法来实现这一目标:先读取XML文件,然后在内存中构建一个新的XML结构,再将这个新结构写回文件。下面是一个简化的步骤: 1. **创建SAX解析器...

    Android SAX 解析XML

    4. 创建解析器:使用`SAXParserFactory`创建一个`SAXParser`实例,然后用它来解析XML文件。 ```java SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parser = factory.newSAXParser(); ...

    android 解析XML文件 生成XML文件

    本文将深入探讨如何使用SAX、DOM和Pull解析器解析XML文件,以及如何生成XML文件。我们将同时展示Java和Kotlin两种语言的实现方法。 一、SAX解析XML文件 SAX(Simple API for XML)是一种事件驱动的解析器,它不会一...

    易语言 xml解析 易语言 xml解析 教程 带源码

    SAX解析器则是事件驱动的,逐行读取XML,适合处理大型文件。 3. **DOM解析**:使用DOM解析,我们可以获取XML文档的节点信息,包括根节点、子节点、属性等,并能对它们进行操作。例如,通过`创建XML文档对象`、`加载...

    从xml文档中读取和写入数据库的例题

    `OutSQLandInputSQL`可能是这个例题中的关键代码文件,它可能包含从XML读取数据并写入数据库的实现(`OutSQL`),以及从数据库查询数据并输出到XML的实现(`InputSQL`)。这两个部分通常涉及上述提到的XML解析、...

    xml.rar_msxml_pudn msxml_xml_xml写入_读取 XML 文件

    在本压缩包"xml.rar"中,包含了一些关于如何使用MSXML库进行XML文件读取和写入的示例资源。 MSXML(Microsoft XML Core Services)是微软提供的一个组件,它允许开发者在Windows环境中处理XML文档。MSXML提供了多种...

    XML解析、读取

    在Java中,处理XML文件是一项常见的任务,无论是读取还是写入XML文档,都有多种方法可供选择。本节将详细介绍如何在Java中进行XML的解析和读取。 1. **DOM解析器**: DOM(Document Object Model)是W3C推荐的一种...

    JDK自带xml解析器dom+sax

    代码示例中没有给出完整的SAX解析器实现,但通常会包括`SAXParserFactory`创建`SAXParser`,然后使用`parse`方法解析XML文件,并传入自定义的`DefaultHandler`子类实例。 总结: DOM解析器适合对XML文档进行随机...

    XML解析器示例

    当需要将处理过的数据写回XML文件时,可以使用“写入XML文件”或“序列化XML”函数。这些函数将LabVIEW的数据结构转化为XML格式,并将其保存到指定的文件中,确保数据的持久化存储。 解析XML是整个过程的核心部分。...

    dom4j以String的方式读取XML的内容,并给String的值赋值,写入XML中

    在这个场景中,我们关注的是如何使用DOM4J以String的形式读取XML内容,然后将String的值赋给XML中的特定节点,最后将更新后的内容写回XML文件。下面我们将详细探讨这一过程。 1. **解析XML到String** 要将XML文件...

    java读取和写入xml文件

    SAX是一种基于事件驱动的解析器,它不将整个XML文档加载到内存,而是逐行读取,遇到元素、属性等事件时触发回调函数。适合处理大型XML文件。 - 优点:内存占用少,适合处理大型XML文件。 - 缺点:编程复杂,需要编写...

    通过SAX和PULL来解析XML,同时生成xml

    1. 使用SAX或PULL解析XML,当遇到需要处理的元素时,将相关信息保存到内存或写入新的XML文件。 2. 在解析过程中,根据处理的事件生成相应的XML元素。如果是开始元素,就创建一个新的元素;如果是结束元素,就关闭...

    android sax ,dom生成xml文件

    在Android中,我们可以使用`DocumentBuilderFactory`和`DocumentBuilder`来创建和构建XML文档,然后使用`Transformer`将其转换为字符串或直接写入文件。以下是一个简单的DOM生成XML文件的例子: ```java ...

    用java读取修改xml文件的代码实现

    使用DOM4J可以轻松地读取、修改和写入XML文件。 5. **JavaFX的XML API**: 虽然主要用于构建图形用户界面,JavaFX也提供了一些XML处理工具,如`javafx.scene.web.XmlHttpRequest`,可以用来异步加载和发送XML数据...

    XML解析器,用于解析XML文件

    2. SAX解析器:SAX解析器采用事件驱动的方式,逐行读取XML文件,遇到元素、属性等时触发相应的事件。这种方式内存效率高,适用于大文件或资源有限的环境,但处理起来比DOM复杂,因为需要编写事件处理器。 TinyXML是...

Global site tag (gtag.js) - Google Analytics