`
leiwuluan
  • 浏览: 703639 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

XML操作(dom,sax,jdom,dom4j)

阅读更多

1>    Dom

XML(Extensible Markup Language 可扩展标记语言)

<1>DOMDocument Object Model(文档对象模型)

DOM的特性:定义一组 Java 接口,基于对象,与语言和平台无关

       XML 文档表示为树,在内存中解析和存储 XML 文档,允许随机访问文档的不同部

 

       使用 DOM 解析 XML 文档:

       获得一个新 DocumentBuilderFactory 实例

       使用 DocumentBuilderFactory 构建 DocumentBuilder

       使用 DocumentBuilder parse( ) 方法解析文件

       将已解析的文档存储在 Document 对象中

       使用 getElementsByTagName( ) 方法获得元素

                    

       DOM的缺点:须将整个文档存储在内存中

代码如下:try {

           //获取文件路径

           //String filePath = request.getSession().getServletContext().getRealPath("/WEB-INF/xmldata/staticdata.xml");

           //构造File对象

           File f = new File("staticdata.xml");

          

           //获取文档解析器工厂对象

           DocumentBuilderFactory factory = DocumentBuilderFactory

                  .newInstance();

           //通过解析器工厂生成文档解析器对象

           DocumentBuilder builder = factory.newDocumentBuilder();

           //解析文件并返回Document对象

           Document doc = builder.parse(f);

          

           //获取XML文件中所有的"attr"节点列表

           NodeList nl = doc.getElementsByTagName("attr");

          

          

           Node attrcode = nl.item(0).getAttributes().getNamedItem("code");

           Node attrname = nl.item(0).getAttributes().getNamedItem("name");

           System.out.println(attrcode.getNodeValue()+","+attrname.getNodeValue());

           System.out.println();

          

           NodeList items = doc.getElementsByTagName("item");

           for(int i=0;i<items.getLength();i++){

              System.out.print("code:");

              String code = items.item(i).getAttributes().getNamedItem("code").getNodeValue();

              String name = items.item(i).getAttributes().getNamedItem("name").getNodeValue();

              System.out.print(code);

              System.out.println(",name:"+name);

           }

          

       } catch (Exception e) {

           e.printStackTrace();

    }

2>    Sax(由于实际项目中很少使用,只作了解)

使用 SAX 解析 XML 文档的步骤:

       创建 SAXParserFactory 的实例

       创建 SAXParser 的实例

       创建 SAXParserHandler

       使用 parse() 方法解析 XML 文档

 

       SAX 的缺点:

       不能对文档进行随机访问

       只读

       只遍历文档一次

实例代码如下:

Stack tags=new Stack();

      String name;

      String address;

      String tel;

      String fax;

      String email;

 

      public void endDocument() throws SAXException {

        System.out.println("------Parse End--------");

       }

 

      public void startDocument() throws SAXException {

        System.out.println("------Parse Begin--------");

       }

 

      public void startElement(String p0, String p1, String p2, Attributes p3) throws SAXException {

        tags.push(p2);

       }

 

      public void endElement(String p0, String p1, String p2) throws SAXException {

        tags.pop();

        if (p2.equals("PERSON")) printout();

       }

 

      public void characters(char[] p0, int p1, int p2) throws SAXException {

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

 

        if (tag.equals("NAME")) name=new String(p0,p1,p2);

        else if (tag.equals("ADDRESS")) address=new String(p0,p1,p2);

        else if (tag.equals("TEL")) tel=new String(p0,p1,p2);

        else if (tag.equals("FAX")) fax=new String(p0,p1,p2);

        else if (tag.equals("EMAIL")) email=new String(p0,p1,p2);

       }

 

      private void printout(){

        System.out.print("Name: ");

        System.out.println(name);

        System.out.print("Address: ");

        System.out.println(address);

        System.out.print("Tel: ");

        System.out.println(tel);

        System.out.print("Fax: ");

        System.out.println(fax);

        System.out.print("Email: ");

        System.out.println(email);

        System.out.println();

        }

 

      static public void main(String[] args) {

        String filename = "candidate.xml";

        SAXParserFactory spf = SAXParserFactory.newInstance();

        SAXParser saxParser=null;

 

        try {

            saxParser = spf.newSAXParser();

        } catch (Exception e) {

            System.out.println(e);

            System.exit(1);

        }

        try {

            saxParser.parse(new File(filename),new SaxTest());

        } catch (SAXException se) {

            System.out.println(se.getMessage());

            System.exit(1);

font-size: 10pt; colo

分享到:
评论

相关推荐

    XML四种解析方式------DOM SAX JDOM DOM4J

    在处理XML文档时,有多种解析方式,包括DOM、SAX、JDOM和DOM4J。每种解析方式都有其特性和适用场景,下面将详细探讨这四种解析方法。 1. DOM(Document Object Model) DOM解析器将整个XML文档加载到内存中,形成一...

    用DOM SAX JDom dom4j 对xml文档解析实例

    本文将深入探讨DOM、SAX、JDom和dom4j四种流行的Java XML解析器,以及它们在处理XML文档时的特点和用法。 1. DOM(Document Object Model) DOM是W3C推荐的一种解析XML的标准方法。它将XML文档表示为一个树形结构,...

    java操作xml dom dom4j sax jdom

    为了处理XML文档,Java提供了多种API,其中最常用的包括DOM、SAX、DOM4J和JDOM。以下是对这些方法的详细介绍: 1. DOM(Document Object Model) DOM是一种树形结构的API,它将整个XML文档加载到内存中,形成一个...

    XML的四种解析器(dom,sax,jdom,dom4j)原理及性能比较,超详细

    常见的 XML 解析器有 DOM、SAX、JDOM 和 DOM4J 等。每种解析器都有其特点和优缺,选择合适的解析器对应用程序的性能和开发效率有很大影响。 1. DOM 解析器 DOM(Document Object Model)是 W3C 官方标准,用于表示...

    java中四种操作(dom、sax、jdom、dom4j)xml方式详解与比较.txt )

    java中四种操作(dom、sax、jdom、dom4j)xml方式详解与

    java 操作xml(dom,sax,jdom,dom4j)需要的包

    在Java中,有多种方式来解析和操作XML文档,包括DOM(Document Object Model)、SAX(Simple API for XML)、JDOM和DOM4J。每种方法都有其特点和适用场景,相应的,它们也需要引入特定的库文件。以下是对这些方法...

    dom jdom sax dom4j 原理性能比

    本篇文章将探讨四种处理XML的Java库:DOM、JDOM、SAX和DOM4J,分析它们的原理、性能特点以及适用场景。 首先,我们来了解DOM(Document Object Model)。DOM是W3C组织定义的一种API,它将XML文档解析为一个树形结构...

    Java解析XML汇总DOM_SAX_JDOM_DOM4j_XPath

    为了能够有效地解析和操作这些XML文件,Java提供了多种不同的方法和技术,其中最常用的就是DOM、SAX、JDOM、DOM4j以及XPath。下面将详细介绍这些技术。 ##### DOM (Document Object Model) DOM是一种标准的API,它...

    生成、解析xml的四种方式(dom,dom4j,sax,jdom)

    本文将详细介绍生成和解析XML的四种主要方法:DOM、DOM4J、SAX和JDOM。 1. DOM(Document Object Model) DOM是W3C组织推荐的一种解析XML的标准方式。它将XML文档视为一个树形结构,每个节点代表XML文档的一部分。...

    xml,sax,jdom,dom4j完全讲解

    【XML详解】 XML,全称为eXtensible Markup Language,是一种可扩展的标记语言,用于描述数据和结构,而非展示方式...理解并掌握XML的基础知识,以及与其相关的API如JDOM和DOM4J,对于进行XML处理和开发具有重要意义。

    DOM、SAX、JDOM、DOM4J读写xml文档

    在Java中,有几种不同的API可以用来处理XML文档,包括DOM、SAX、JDOM和DOM4J。下面将详细介绍这四种方式。 **DOM(Document Object Model)** DOM是一种树形结构的API,它将整个XML文档加载到内存中,形成一个可...

    操作xml的方式: SAX, DOM, JDOM , DOM4J的比较

    处理XML文档有多种方式,其中最常见的是SAX(Simple API for XML)、DOM(Document Object Model)、JDOM和DOM4J。下面我们将详细探讨这四种方法。 1. DOM(Document Object Model) DOM是W3C制定的一个标准,它...

    sax,dom,jdom,dom4j之xml解析大荟萃

    在Java中,有多种XML解析器供开发者选择,包括SAX(Simple API for XML)、DOM(Document Object Model)、JDOM和DOM4J。这四种解析方式各有特点,适用于不同的场景。下面我们将详细探讨它们的原理、优缺点以及应用...

    一写小例子,dom4J,dom,jdom,sax解析和创建XML文件,代码虽然简单,但是功能实现,适合入门

    本文将详细介绍四种主流的Java XML处理库:DOM4J、DOM、JDOM和SAX,并通过简单的代码示例帮助初学者入门。 1. DOM (Document Object Model) DOM是W3C制定的一种标准,它将XML文档视为一个树形结构,允许开发者通过...

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

    Java 读取XML文件时,有多种解析器可供选择,分别是SAX、DOM、JDOM和DOM4J。这些解析器各有优缺点,适用于不同的场景。 SAX(Simple API for XML)是一种基于事件驱动的解析器。它在解析XML文件时,会按顺序触发一...

    SAX, DOM, JDOM, DOM4J解析XML文件

    本文将详细介绍四种在Java中解析XML文件的方法:SAX、DOM、JDOM以及DOM4J。 1. SAX(Simple API for XML) SAX是一种基于事件驱动的解析器,它在读取XML文档时会触发一系列事件,如开始元素、结束元素、字符数据等...

    java xml 4 种 解析xml 方法 sax jdom dom stAX

    为了处理XML文档,Java提供了多种解析方法,包括SAX(Simple API for XML)、JDOM(Java Document Object Model)、DOM(Document Object Model)以及stAX(Streaming API for XML)。下面将详细介绍这四种解析XML的...

    XML解析的四种方法源码(DOM, JDOM ,DOM4J , SAX)

    在Java中,解析XML文件是常见的任务,通常有四种主要的方法:DOM (Document Object Model),JDOM,DOM4J以及SAX (Simple API for XML)。以下是对这四种XML解析方式的详细介绍: 1. DOM解析: DOM是一种树形结构的...

    dom,jdom,dom4j的区别

    在Java开发中,处理XML文档时常常会遇到几种不同的解析技术,主要包括DOM、JDOM和DOM4J。这些技术各有特点,适用于不同的场景。 DOM,全称为Document Object Model,是W3C制定的一个标准,它提供了一种与平台和语言...

Global site tag (gtag.js) - Google Analytics