`

JAVA中用SAX和DOM技术解析XML的应用

阅读更多
1.SAX技术:
package sax;

import java.io.File;
import java.io.IOException;

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

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xml.sax.helpers.DefaultHandler;
/**
 * SAX解析技术
 * @author Daniel Cheng
 *
 */
public class SAXParserTest {

    public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
        SAXParserFactory factory=SAXParserFactory.newInstance();
        factory.setValidating(true);
        SAXParser parser=factory.newSAXParser();
        System.out.println(parser.isValidating());//DTD校验
        parser.parse(new File("file/dong.xml"), new DefaultHandler(){
           
            @Override
            public void characters(char[] ch, int start, int length) throws SAXException {
                System.out.println(new String(ch,start,length));
               
            }

            @Override
            public void endElement(String uri, String localName, String qName) throws SAXException {
                System.out.println("</"+qName+">");
            }

            @Override
            public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
                System.out.print("<"+qName);
                for(int i=0;i<attributes.getLength();i++){
                   
                    System.out.print(" " + attributes.getQName(i) + "=\"" + attributes.getValue(i)+ "\"");
                }
                System.out.println(">");
            }
           
           
            @Override
            public void error(SAXParseException e) throws SAXException {
                System.out.println("一般错误!"+e.getMessage());
            }

            @Override
            public void fatalError(SAXParseException e) throws SAXException {
                System.out.println("严重错误!"+e.getMessage());
            }
           
           
        });

    }

}

2.DOM技术:
package dom;

import java.io.File;
import java.io.IOException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
/**
 * DOM解析技术
 * @author Daniel Cheng
 *
 */
public class DompraserTest {

    public static void main(String[] args) throws ParserConfigurationException,
            SAXException, IOException {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document doc = builder.parse(new File("file/dong.xml"));
        Element root = doc.getDocumentElement();
        printElement(root);
    }

    public static void printElement(Element e) {
        System.out.print("<" + e.getTagName());
        NamedNodeMap map = e.getAttributes();
        if(map!=null){
        for (int i = 0; i < map.getLength(); i++) {
            Attr attr = (Attr) map.item(i);
            System.out.print(" " + attr.getName() + "=\"" + attr.getValue()+ "\"");
        }
        }
        System.out.print(">");
       
        NodeList list = e.getChildNodes();
        for (int i = 0; i < list.getLength(); i++) {
            Node n = list.item(i);
            if (n.getNodeType() == Node.ELEMENT_NODE) {
                Element en = (Element) n;
                printElement(en);
            } else {
                System.out.print(n.getTextContent());
            }
        }
        System.out.print("</" + e.getTagName() + ">");
    }

}

 

2
0
分享到:
评论

相关推荐

    java中用dom解析xml的经典入门级文档

    ### Java中使用DOM解析XML详解 #### 一、引言 在Java开发中,解析XML是一种常见...此外,随着技术的发展,还有其他解析XML的方式,如StAX (Streaming API for XML),它结合了SAX和DOM的优点,提供了更好的性能表现。

    java中用dom4j读取xml

    为了处理XML文档,开发者通常会利用解析器,其中DOM4J是一个功能强大且灵活的Java库,专为处理XML、XPath和XSLT而设计。本文将深入探讨如何使用DOM4J库来读取XML文件。 首先,让我们理解DOM4J的基本概念。DOM4J是...

    php中用来解析xml的类

    在PHP中,XML解析是处理XML数据...通过理解和应用这个解析类,开发者可以轻松地读取和操作XML文件中的信息,从而实现数据的提取和处理。然而,根据具体需求,可能需要选择更高级的解析技术,以应对复杂场景和性能挑战。

    通过JAVA生成XML

    本篇主要介绍如何通过Java编程语言生成XML文档,结合“XML项目开发中用到的”这一标签,我们将深入探讨Java API中的DOM、SAX和StAX三种解析器,以及它们在创建XML文件时的应用。 1. DOM(Document Object Model)...

    Dom4j对Java xml文件的操作

    它提供了多种方式来解析XML文档,包括SAX(简单API for XML)和DOM解析器。Dom4j的主要优点是其简洁的API,使得XML处理更加直观。 **创建XML文档:** 使用Dom4j创建XML文档通常从创建一个`Document`实例开始。你...

    dom4j的jar包(读取xml)

    总之,DOM4J是Java开发者处理XML文档的重要工具,结合Jaxen提供的XPath支持,能够高效地完成XML的读取、解析和操作任务。这两个库在许多Java项目中都是不可或缺的部分,特别是那些需要频繁处理XML数据的场景。

    xml-commons-external-1.3.04-bin.zip

    总结起来,XML Commons External 1.3.04是一个强大的XML处理工具集,提供了高效的解析器、全面的DOM和SAX实现,以及XML Schema支持,是Java开发者处理XML文档时不可或缺的库。通过解压"xml-commons-external-1.3.04-...

    JAVA发邮件功能和其它零碎的东西

    Java提供内置的DOM、SAX和StAX解析器来解析XML数据。DOM解析器将整个XML文档加载到内存中,形成一棵节点树,适合小规模或结构简单的XML。SAX(Simple API for XML)是事件驱动的解析器,只读且逐行处理,适用于大...

    JavaDemo:java中用到的技术分享demo

    本项目“JavaDemo”提供了对三种主要XML解析方法的示例:SAX(Simple API for XML)、DOM(Document Object Model)和StAX(Streaming API for XML)。下面我们将详细探讨这些技术及其在Java中的应用。 1. **SAX...

    JAVA中用axis编写webService时所用jar包

    - xml-apis.jar:包含了基本的XML API,如DOM和SAX。 - xalan.jar:提供了XPath和XSLT的实现。 - xercesImpl.jar:提供了XML解析器的实现。 5. **其他依赖库**:如log4j.jar用于日志记录,wsdl4j.jar用于处理...

    java开发常见jar包

    它支持DOM、SAX和StAX解析器,同时提供XPath查询功能,使得开发者可以高效地访问XML数据。 2. **sqljdbc**: 这通常指的是微软提供的SQL Server JDBC驱动程序,用于在Java应用程序中与Microsoft SQL Server数据库...

    java 高级功能

    Java提供了多种处理XML的API,如DOM(Document Object Model)、SAX(Simple API for XML)和DOM4J等。DOM将整个XML文档加载到内存中形成一个树形结构,方便遍历和操作,但内存消耗较大;SAX是事件驱动的解析方式,...

    在j2ee项目开发中经常用到的小组件

    总之,`dom4j`是Java开发中处理XML文档的强大工具,无论是在解析、创建还是修改XML文档时,都能提供便利和灵活性。了解并熟练掌握`dom4j`,对于提升J2EE项目的开发效率和代码质量有着积极的作用。在实际项目中,结合...

    xml文件操作详解crud操作

    在编程环境中,可以使用各种语言(如Python的ElementTree、Java的DOM或SAX API)来动态生成这样的XML结构。 2. **读取(Read)** 读取XML文件主要涉及解析XML内容。DOM(Document Object Model)方法将整个XML...

    【免费】2010新版Java教程

    - **Java API for XML Processing (JAXP):**提供了对DOM和SAX的支持,还包括XSLT转换等功能。 - **XML数据绑定:**使用Java Bean将XML数据映射到Java对象。 ### 四、Java开发工具包(JDK) #### 4.1 JDK版本 - **...

    java所需的各种API文档

    `javax.xml`和`org.w3c.dom`包提供了处理XML文档的API,如DOM解析、SAX解析和XPath表达式。 9. **集合框架** 集合框架是Java中用来存储和操作对象的重要部分,包括接口如`List`, `Set`, `Map`,以及它们的实现如`...

    xml的几种方式的操作集锦大全

    - **DOM解析**:将整个XML文档加载到内存中形成一个树形结构,便于遍历和修改。但内存消耗较大,适用于小型文档。 - **SAX解析**:事件驱动型解析,只读取和处理当前元素,节省内存,适合大型文档。 - **PULL解析...

    整理的 神舟面试题 笔试题 有答案 要去神舟数码 软件公司面试的注意咯 再一版

    Java Server Page (JSP) 和 Servlet 都是 Java Web 开发中用的技术,但它们有不同的作用域和应用场景。JSP 主要用于视图层,负责生成网页内容,而 Servlet 主要用于控制层,负责处理请求和响应。JSP 编译后实际上是...

    Core Java Volume II Fundamentals 9th Edition

    本书深入分析了Java处理XML的方法,包括DOM、SAX、StAX解析器的使用技巧,以及如何使用XSLT进行数据转换。此外,还介绍了JAXB等API来实现Java对象与XML之间的序列化和反序列化。 **10. Java性能调优** 性能优化...

    JAVA 语言程序设计源代码

    源代码中可能包含DOM、SAX或StAX解析XML的方法。 10. **Java EE框架应用**: 如Spring、Hibernate等框架的使用,可以提高开发效率并简化代码。源代码可能包含这些框架的集成示例,如依赖注入、事务管理等。 通过...

Global site tag (gtag.js) - Google Analytics