DOM将XML文件解析为文档的过程

转载 2006年06月07日 13:56:00

为了使用 XML 文件中的信息,必须解析文件以创建一个 Document 对象

Document 对象是一个接口,因而不能直接将它实例化;一般情况下,应用程序会相应使用一个工厂。准确的过程因实现而异,但是基本思想是相同的。

Java 环境中,解析文件是一个三步过程:

  1. 创建 DocumentBuilderFactory DocumentBuilderFactory 对象创建 DocumentBuilder
  2. 创建 DocumentBuilder DocumentBuilder 执行实际的解析以创建 Document 对象。
  3. 解析文件以创建 Document 对象。

现在您可以开始构建应用程序了。

基本的应用程序

首先创建一个基本的应用程序,即一个名为 OrderProcessor 的类。

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.File;
import org.w3c.dom.Document;

public class OrderProcessor {
   public static void main (String args[]) {
      File docFile = new File("orders.xml");
      Document doc = null;      
      try {

       DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
       DocumentBuilder db = dbf.newDocumentBuilder();
       doc = db.parse(docFile);

      } catch (Exception e) {
         System.out.print("Problem parsing the file: "+e.getMessage());
      }
   }
}

首先,Java 代码导入必要的类,然后它创建 OrderProcessor 应用程序。本教程中的例子仅处理一个文件,因此为简洁起见,应用程序包含了对该文件的直接引用。

因此 Document 对象可以在以后使用,应用程序把它定义在 try-catch 块之外。

try-catch 块中,应用程序创建了 DocumentBuilderFactory,然后再使用它来创建 DocumentBuilder。 最后,DocumentBuilder 解析文件以创建 Document

解析器设置

使用 DocumentBuilder 创建解析器的优点之一在于能够控制 DocumentBuilderFactory 创建的解析器上的各种设置。例如,可以设置解析器验证文档:

...
try {
         DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
         
         dbf.setValidating(true);
         
         DocumentBuilder db = dbf.newDocumentBuilder();
         doc = db.parse(docFile);
      } catch (Exception e) {
...
Java 的 DOM Level 2 实现允许通过以下方法控制解析器的参数:
setCoalescing():决定解析器是否要将 CDATA 节点转换为文本,以及是否要和周围的文本节点合并(如果适
用的话)。其默认值为 false。
setExpandEntityReferences(): 确定是否要展开外部实体引用。如果为 true,外部数据将插入文档。其默
认值为 true。setIgnoringComments():确定是否要忽略文件中的注释。其默认值为 false。
setIgnoringElementContentWhitespace():确定是否要忽略元素内容中的空白(类似于浏览器对待 HTML
的方式)。其默认值为 false。
setNamespaceAware():确定解析器是否要注意名称空间信息。其默认值为 false。
setValidating():默认情况下,解析器不验证文档。将这个参数设置为 true 可打开验证功能。
解析器异常
 

由于在创建解析器时存在所有这些可能性,其中许多地方都可能会出错。正如这里的例子所表明的,应用程序把所有这些内容转储到一个单一的通用 Exception 中,就调试而言,这样可能不是很有帮助。

为更好地查明问题,您可以捕捉与创建和使用解析器的各方面相关的特定异常:

...
      try {
         DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
         DocumentBuilder db = dbf.newDocumentBuilder();
         doc = db.parse(docFile);
      } catch (javax.xml.parsers.ParserConfigurationException pce) {
         System.out.println("The parser was not configured correctly.");
         System.exit(1);
      } catch (java.io.IOException ie) {
         System.out.println("Cannot read input file.");
         System.exit(1);
      } catch (org.xml.sax.SAXException se) {
         System.out.println("Problem parsing the file.");
         System.exit(1);
      } catch (java.lang.IllegalArgumentException ae) {
         System.out.println("Please specify an XML source.");
         System.exit(1);

      }
...

一旦解析器已创建了一个 Document,应用程序就能单步调试它以检查数据。

浏览器解析渲染页面过程

转自:https://segmentfault.com/a/1190000006879700在浏览器没有完整接受全部HTML文档时,它就已经开始显示这个页面了,浏览器是如何把页面呈现在屏幕上的呢?不同...
  • shuidinaozhongyan
  • shuidinaozhongyan
  • 2017年07月15日 08:32
  • 227

DOM_概述&解析特点

DOM |--早期页面都是一些静态的页面,所谓的静态页面,就是页面中又给我们提供了一些相关的资源;我们只要去看就可以了。我们只要点击超链接就可以了; |...
  • java9832
  • java9832
  • 2015年07月19日 00:14
  • 671

【浏览器渲染原理】解析和DOM树构建之HTML解析器

HTML解析器的任务是将HTML标记解析成解析树。 HTML的词汇和语法在W3C规范中进行了定义。 HTML的定义采用了DTD(DocumentType Definition,文档类型定义)。 解析树...
  • greenqingqingws
  • greenqingqingws
  • 2014年02月13日 15:48
  • 5955

DOM探索之基础详解

DOM为document、object、model三个单词的缩写,直译过来即文档对象模型。 DOM的地位 我们知道,一个网页是由html来搭建结构的,通过css来定义网页的样式,而javascript...
  • xiaozhi_2016
  • xiaozhi_2016
  • 2016年10月25日 16:59
  • 780

使用DOM解析XML文件

XML是一种可扩展的标记语言,首先它是一种标记语言,类似于HTML,有标签,标签有属性,然而与HTML不同的是XML的标签是可以自己定义的,这样就方便我们存储一些有层次结构的内容! 这里要说的是使用D...
  • zhuxinquan61
  • zhuxinquan61
  • 2016年01月21日 20:55
  • 829

Webkit之理解HTML解析和DOM树

## 概述 前面介绍了很多眼花缭乱的新技术,关于渲染,关于硬件加速,关于布局,关于其他很多,同大家一样,我也花了很多时间来消化它们。本章介绍稍微基础些的话题(本系列的写作顺序完全是随心所欲地),...
  • sauphy
  • sauphy
  • 2015年11月19日 01:34
  • 1152

dom解析方式对xml文档进行操作

java就业培训教程 张孝祥 36.2元 javascript就业培训教程 张孝祥 ...
  • qq_30638831
  • qq_30638831
  • 2016年04月07日 14:45
  • 665

使用DOM解析XML文件

首先写了一个xml文件 c# 张三 1990 60 JAVA 李四 1991 80 Dom解析xml文件 pa...
  • qq_27376871
  • qq_27376871
  • 2016年08月08日 11:18
  • 744

认识DOM以及DOM加载过程

,众所周知是文档对象模型。这其中文档是什么呢?对象模型是什么?针对的对象是哪些? 其实可以把网页看做是一种文档,而且是有结构的文档。 其次,网页中的各种标记或者叫做标签,可以映射成我们所谓...
  • u014649089
  • u014649089
  • 2014年04月12日 09:14
  • 2248

jaxp解析器用dom方式操作xml文档的总结

1. xml解析技术概述  解析xml文档一般有两种技术:dom(Document Object Model)和sax(Simple API for XML)。dom即文档对象模型,是W3C组织推荐的...
  • eson_15
  • eson_15
  • 2016年05月26日 18:48
  • 2560
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:DOM将XML文件解析为文档的过程
举报原因:
原因补充:

(最多只允许输入30个字)