本篇文章为大家展示了利用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数据