首页 > 代码库 > Java 处理 XML 的三种主流技术及介绍——主要转自 IBMhttp://www.ibm.com/developerworks/cn/xml/dm-1208gub/

Java 处理 XML 的三种主流技术及介绍——主要转自 IBMhttp://www.ibm.com/developerworks/cn/xml/dm-1208gub/

XML (eXtensible Markup Language) 意为可扩展标记语言:是数据传输的载体

 

 XML 3种主要解析方式:

  a.DOM:W3C 处理 XML 的标准 API

            工作模式:在处理开始时将整个 XML 文件作为类似树结构的方式读入内存中以便操作及解析

            优点: 支持应用程序对 XML 数据的内容和结构进行修改

            缺点:解析大数据量的 XML 文件时会遇到类似于内存泄露以及程序崩溃的风险

            适用范围:小型 XML 文件解析、需要全解析或者大部分解析 XML、需要修改 XML 树内容以生成自己的对象模型

  b.SAX(流解析方式)

            工作模式:流解析的技术,通读整个 XML 文档树,通过事件处理器来响应程序员对于 XML 数据解析的需求

             优点: 不需要将整个 XML 文档读入内存当中,它对系统资源的节省,支持 XPath 查询的

             缺点: 繁琐, 每次解析系统开销也会过大

             适用范围:大型 XML 文件解析、只需要部分解析或者只想取得部分 XML 树内容、有 XPath 查询需求、有自己生成特定 XML 树对象模型的需求

     c.Digester/JAXB  XML的JavaBean化

             适用范围: 有将 XML 文档直接转换为 JavaBean 需求。

知识点一。

  api 解析

javax.xml.parsers  Class DocumentBuilder
:Defines the API to obtain DOM Document instances from an XML document. Using this class, an application programmer can obtain a Document from XML.[定义了 从一个XML文档获取一个DOM文档实例,运用这个类程序员可从XML获取Document 接口]
 An instance of this class can be obtained from the DocumentBuilderFactory.newDocumentBuilder() method. Once an instance of this class is obtained, XML can be parsed from a variety of input sources. These input sources are InputStreams,  Files, URLs, and SAX InputSources.[通过 DocumentBuilderFactory.newDocumentBuilder()的静态方法获取该实例。(注意该类的构造器是受保护的访问权限。禁止实例化) 一旦该类实例被获取,各种输入源的XML就能够被解析。这些输入的资源可以是输入流、文  件、RUL、流输入资源]
  注意:虽然该类API 重用了SAX API 的一些方法。但是要求 底层的DOM实现 用流解析机制解析XML文档为一个Document对象,该类主要用已经存在的API与应用程序的交互

 示例: 

     

清单 1. XML 片段

  <xml version="1.0" encoding="UTF-8">

  <books>

    <book>

      <title id="001">Harry Potter</title>

      <author>J K. Rowling</author>

    </book>

    <book>     

      <title id="002">Learning XML</title>

      <author>Erik T. Ray</author>

    </book>

  </books>

  DOM 解析XML

Java 处理 XML 的三种主流技术及介绍——主要转自 IBMhttp://www.ibm.com/developerworks/cn/xml/dm-1208gub/