`
keep_going
  • 浏览: 11989 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

XML文档的解析

阅读更多

XML文件的创建和解析常用的主要有4种,下面以xml文件为例进行说明:

<?xml version="1.0" encoding="utf-8"?>
<dict>
    <record>
        <row>
            <field name="dictname" value="Sex" describe="性别"></field>
            <field name="dictitem" value="0000"></field>
       </row>
       <row>
           <field name="dictname" value="Province" describe="省市"></field>
           <field name="dictitem" value="0001"></field>
       </row>
   </record>
</dict>

 

1、Dom(Document Object Model)创建和解析XML文档:

描述:将整个xml文件解析成一个Dom树存放在内存中,然后通过程序去访问内存中的树信息。

优点:树存在内存中,操作上相对简单,可支持删除、修改和排序。

缺点:内存消耗大,硬件要求高。

 

Dom API解析XML的步骤:

A、扫描XML文件,获取输入流对象:

      InputStream in = new FileInputStream(sFileName);

B、创建解析器对象:

      DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

      DocumentBuilder builder = factory.newDocumentBuilder();

C、解析文件流,获得Document对象:

     Document document = builder.parse(in);

D、根据获得的Document对象,获取节点信息。

 

代码实现请参考附件DomUtils.java

 

2、SAX(Simple API for XML)创建和解析XML文档:

描述:事件驱动,解析器发现元素开始、元素结束及文档的开始和结束时,会通知处理事件。我们只需要利用代码响应事件就可实现文档的处理。

优点:占用资源少(不需要加载整个文档),解析器代码小。

缺点:不持久,事件后没保存数据则数据丢失;无状态,事件只能得到文本,却不知文本所属元素。

 

SAX解析XML的步骤:

A、创建SAXParserFactory实例:

      SAXParserFactory  factory = SAXParserFactory.newInstance();

B、创建SAXParser实例;

C、创建SAXReader实例:

      XmlReader reader = factory.newSAXParser().getXMLReader();

D、XMLReader加载XML,解析XML。

 

代码实现请参考附件SaxUtils.java。

 

3、Dom4j创建和解析XML文档:

描述:Dom4j具有丰富的Java XML API,拥有性能优异,功能强大(拥有本地的XPath支持),使用简单的特性。

 

Dom4j解析XML文件的步骤:

A、读取文件:

      File file = new File(String sFileName);

B、创建XMLReader:

      XMLReader reader = new XMLReader();

C、解析XML,获取Document:

      Document document = reader.read(file);

D、解析文档Dom,获取节点及属性值。

 

代码实现请参考附件Dom4jUtils。

 

4、JDom创建和解析XML文档:

描述:20-80原则,大大减少了代码量。底层是使用SAX(最常用)、DOM、Xanan文档实现。

 

JDom解析XML文件的步骤:

A、创建解析器:

      SAXBuilder builder = new SAXBuilder(false);

B、得到Document文档:

      Document document = builder.build(xmlpath);

C、获取根节点:

      Element root = document.getRootElemnet();

D、遍历获得节点信息:

      root.getChildren();

    

代码实现请参考附件JDomUtils。

 

5、Apache Commons Degister解析XML:

描述:Degister由"事件"驱动,通过调用预定义的规则操作对象栈,将XML文件转换为Java对象。

原理:底层采用SAX解析XML,识别出特定XML元素(实际被细分为begin、body、end、finish四个时点),执行特定的动作(创建特定的Java对象,或调用特定对象的方法)。

           XML元素根据匹配模式(matching pattern)识别,而相关操作由规则(rule)定义。转换过程中,Digester维持了一个对象栈,用来存放转换中生成的、或是为转换临时创建

           的Java对象。对输入XML文件作了一趟完整的扫描后,对象栈的栈顶元素即为目标对象。

优点:Degister屏蔽了Sax的解析细节,仅关注解析本身,大大简化了转换操作。

 

注:工具类基本能满足所有的XML文档操作。

 

 

 

分享到:
评论

相关推荐

    XML文档解析相关工具

    在Java程序开发中,处理XML文档时,我们常常会用到一些库来帮助解析和操作XML。本话题将详细介绍两个重要的XML处理工具:dom4j和jaxen,以及它们在解析XML文档中的作用。 首先,dom4j是Java的一个非常流行的XML处理...

    用C++语言实现XML文件解析的一种方案

    ### 用C++语言实现XML文件解析的一种方案 #### 概述 随着互联网技术的不断发展,XML(可扩展标记语言)作为一种重要的数据交换格式,在各领域中的应用日益广泛。XML以其良好的可读性和开放性成为了数据共享的标准...

    C++ XML文件解析库 tinyxml2

    **C++ XML文件解析库 TinyXML2** XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于网络服务、配置文件、数据交换、对象序列化等领域。TinyXML2是一个轻量级、高效的C++库,专为解析和操作...

    XML文件解析代码

    XML文件解析工具类

    C写的解析xml文件源代码

    常见的做法是使用结构体来模拟XML文档的树形结构,例如定义`struct Node`来表示一个XML节点,包含元素名、属性、子节点等信息。 2. **文件读取**:首先,我们需要打开XML文件并读取其内容。这可以通过`fopen()`函数...

    XML文件解析问题.pdf

    XML 文件解析问题 XML 文件解析是指将 XML 文件转换为可被计算机理解和处理的格式。XML 文件解析问题是指在解析 XML 文件时遇到的问题,例如解析速度慢、内存占用高、解析错误等。 在 XML 文件解析中,主要有两种...

    Tinyxml文件解析经典例子

    Tinyxml 文件解析经典例子 TinyXML 是一个开源的解析 XML 的解析库,能够用于 C++,能够在 Windows 或 Linux 中编译。这个解析库的模型通过解析 XML 文件,然后在内存中生成 DOM 模型,从而让我们很方便的遍历这棵...

    xml 文件解析专题

    在IT行业中,XML文件解析是一项基础且重要的技能,尤其在数据交换、配置文件、Web服务等领域有着广泛的应用。本专题将深入探讨XML文件解析的相关知识点。 一、XML基本结构 XML文档由元素(Elements)、属性...

    xml.rar_XML 文档 解析_XML 解析_XML文档

    这个"xml.rar"压缩包包含了一系列与XML文档解析相关的源代码文件,对于初学者来说,是理解XML解析机制的一个很好的实例。 1. **XML文档结构**: XML文档由一系列元素组成,每个元素通过开始标签 `&lt;tag&gt;` 和结束...

    VC xml文件解析类

    "VC XML文件解析类"就是这样的一个实现,它提供了C++程序员处理XML文件的能力。 首先,我们来看`Markup.cpp`和`Markup.h`这两个文件。`Markup.h`通常会包含类的声明,定义类的结构和公共接口,而`Markup.cpp`则会...

    XmlPullParser解析Xml文件解析demo

    XmlPullParser是Android系统提供的一种解析XML文件的API,它是一种基于事件驱动的解析方式,能够高效、节省资源地处理XML文档。在这个“XmlPullParser解析Xml文件解析demo”中,我们将探讨如何利用XmlPullParser来...

    xml文件解析工厂

    XML文件解析工厂则是处理XML文档的核心工具,它简化了对XML数据的操作,使得开发者能够更加高效地读取、写入和处理XML内容。 在Java中,XML文件解析主要有DOM(Document Object Model)、SAX(Simple API for XML)...

    基于C++的xml文档解析器源代码

    至于"a.xml"文件,它是一个实际的XML文档,用于测试解析器的功能。你可以尝试使用解析器读取、修改这个文件,验证其正确性。 总之,这个基于C++的XML解析器源代码提供了一个学习和实践XML处理的好机会。通过阅读和...

    XML文件解析编辑小工具

    "XML文件解析编辑小工具",如firstobject xml editor 2.4,是一款专为XML文档设计的轻量级编辑器,提供了对XML文件的深度解析和编辑功能。 这款工具的特色在于其绿色小巧的特性,意味着它无需安装即可使用,占用...

    xml文件解析源码

    它们提供了简单的API,使得开发者能够方便地读取、修改和创建XML文档。 TinyXML库是最初的版本,它为XML解析提供了一个易于使用的接口。 TinyXML2则是其后续更新的版本,旨在解决TinyXML的一些局限性,例如内存管理...

    基于QT的XML文件解析器

    标题中的“基于QT的XML文件解析器”是指一个利用QT框架开发的应用程序,该程序能够读取、解析和展示XML(可扩展标记语言)文件的内容。QT是一个流行的跨平台应用程序开发框架,支持多种操作系统,如Windows、Linux和...

    java xml文件解析

    ### Java XML 文件解析详解 #### 一、XML 文件解析概述 XML (Extensible Markup Language) 是一种用于标记数据的语言,它的设计目的是传输和存储数据。XML 的灵活性使其成为多种应用场景中的首选格式,尤其是在...

    pomxml文件解析

    pomxml文件解析pomxml文件解析pomxml文件解析

    四中最常用的XML文件解析总结.doc

    根据给定文件的信息,我们将深入探讨四种最常用的XML文件解析技术:DOM(Document Object Model)、SAX(Simple API for XML)、STAX(Streaming API for XML)以及DOM4j。 ### DOM解析 DOM是一种树型结构的数据...

    xml解析文件的两种方式

    DOM解析方式是将整个XML文档加载到内存中,构建一个树形结构,称为DOM树。这个树的每个节点代表XML文档的一个部分,如元素、属性、文本等。DOM解析器允许开发者通过遍历这棵树来访问和修改XML文档的任何部分。 优点...

Global site tag (gtag.js) - Google Analytics