利用Java如何实现解析XML数据

  

本篇文章为大家展示了利用Java 如何实现解析XML数据,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

DOM 解析

DOM(Document Object Model, 文档对象模型),在应用程序中,基于 DOM 的 XML 分析器将一个 XML 文档转换成一个对象模型的集合(通常称为 DOM 树 ),应用程序正是通过对这个对象模型的操作,来实现对 XML 文档数据的操作。XML 本身是以树状的形式出现的,所以 DOM 操作的时候,也将按章树的形式进行转换。在整个 DOM 树中,最大的地方指的是 Document,表示一个文档,在这个文档中只存在一个根节点。

注意:在使用 DOM 操作的时候,每一个文字的区域也是一个节点,称为文本节点。

核心操作接口

在 DOM 解析中有以下四个核心的操作接口:

Document:此接口代表了整个 XML 文档,表示的是整棵 DOM 树的根,提供了对文档中的数据进行访问和操作的入口,通过 Document 节点可以访问 XML 文件中所有的元素内容。

Node:此接口在整个 DOM 树中具有举足轻重的地位,DOM 操作的核心接口中有很大一部分接口是从 Node 接口继承过来的。例如:Document、Element 等接口,在 DOM 树中,每一个 Node 接口代表了 DOM 树中的一个节点。

NodeList:此接口表示的是一个节点的集合,一般用于表示有顺序关系的一组节点,例如: 一个节点的子节点,当文档改变的时候会直接影响到 NodeList 集合。

NamedNodeMap:此接口表示的是一组节点和其唯一名字对应的一一对应关系,本接口主要用于属性节点的表示上。

DOM 解析过程

如果一个程序需要进行 DOM 解析读取操作的话,也需要按照如下的步骤进行:

 建立 DocumentBuilderFactory : DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
 建立 DocumentBuilder: DocumentBuilder builder=factory.newDocumentBuilder();
 建立 Document : Document doc=builder.parse(“要解析的文件路径”);
 建立 NodeList : NodeList nl=doc.getElementsByTagName(“读取节点”);
 进行 XML 信息读取

SAX 解析

SAX(Simple API for XML)解析是按照 xml 文件的顺序一步一步的来解析。SAX 没有官方的标准机构,它不属于任何标准组织或团体,也不属于任何公司或个人,而是提供任何人使用的一种计算机技术。

SAX(Simple API for XML,操作 XML 的简单接口),与 DOM 操作不同的是,SAX 采用的是一种顺序的模式进行访问,是一种快速读取 XML 数据的方式。当使用 SAX 解析器进行操作的时候会触发一系列的事情,当扫描到文档(document)开始与结束、元素(element)开始与结束时都会调用相关的处理方法,并由这些操作方法作出相应的操作,直至整个文档扫描结束。

如果要想实现这种 SAX 解析,则肯定首先建立一个 SAX 的解析器。

//1,创建解析器工厂
  SAXParserFactory工厂=SAXParserFactory.newInstance ();//2,获得解析器
  SAXParser解析器=factory.newSAXParser ();//SAX解析器,继承DefaultHandler
  字符串路径=新文件(“资源/demo01.xml") .getAbsolutePath ();//解析
  解析器。解析(路径,新的MySaxHandler ()); 

<强> JDOM解析

在W3C本身提供的XML操作标准,DOM和SAX,但是从开发角度上看,DOM和SAX本身是各有特点的,DOM可以修改,但不适合读取大文件,而SAX可以读取大文件,但是本身不能修改。所谓的JDOM=DOM的可修改+ SAX的读取大文件,JDOM本身是一个免费的开源组件,直接从www.jdom.org上下载。

    <李> JDOM操作XML常用类: <李>文档:表示整个XML文档,是一个树形结构李 <李> Eelment:表示一个XML的元素,提供方法操作其子元素,如文本,属性和名称空间等李 <李>属性:表示元素包含的属性李 <李>文本:表示XML文本信息李 <>李XMLOutputter: XML输出流、底层是通过JDK中流实现李 <李>格式:提供XML文件输出的编码,样式和排版等设置李

我们发现JDOM的输出操作要比传统的DOM方便得多,而且也更加直观,包括在输出的时候都很容易了。此时观察到的是JDOM对于DOM解析的支持,但是也说,JDOM本身也支持了SAX的特点,所以,可以使用SAX进行解析操作。

//获取SAX解析器
  SAXBuilder builder=new SAXBuilder ();
  文件文件=新文件(“资源/demo01.xml");//获取文档
  文档doc=建设者。构建(新文件(file.getAbsolutePath ()));//获取根节点
  根元素=doc.getRootElement ();
  System.out.println (root.getName ());//获取根节点下所有的子节点,也可以根据标签名称获取指定的直接点
  List

利用Java如何实现解析XML数据