随笔-1  评论-68  文章-98  trackbacks-0

XML是原标记语言,在Java中广泛应用于数据存储和交换。

1、配置文件


1.1 Windows风格

文件名:config.properties

数据格式:

[Product]
Name=小秘书 

[IM] 
;  所有的文字在实际使用中都会进行相应替换,替换规则如下:
;  $peeruin$ ---> 替换为对方的uin  

;  AllInOne在线
Text0=$peernick$开通了小秘书自动应答服务,是否与其[link=open peeruin=$peeruin$ selfuin=$selfuin$ from=6]小秘书[/link]聊聊?

访问方式: Product.Name

如: QQ

 

1.2 OO风格

文件名:
config.xml

数据格式:

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

< prop >
    
< product >
        
< name > value </ name >
   
</ product >
</ prop >

访问方式: product.name

如: Jive

2、XML解析器

2.1 DOM

DOM 是用与平台和语言无关的方式表示 XML 文档的官方 W3C 标准。DOM 是以层次结构组织的节点或信息片断的集合,允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构。由于它是基于信息层次的,因而 DOM 被认为是基于树或基于对象的。

用 DOM 解析模型的优点是编程容易,可以很容易的添加和修改树中的元素。然而由于使用 DOM 解析器的时候需要处理整个 XML 文档,所以对性能和内存的要求比较高,尤其是遇到很大的 XML 文件的时候。由于它的遍历能力,DOM 解析器常用于 XML 文档需要频繁的改变的服务中。

2.2 SAX

SAX 解析器采用了基于事件的模型,它在解析 XML 文档的时候可以触发一系列的事件,当发现给定的tag的时候,它可以激活一个回调方法,告诉该方法制定的标签已经找到。只是在读取数据时检查数据,不需要将数据存储在内存中,对内存的要求通常会比较低。但用 SAX 解析器的时候编码工作会比较困难,而且很难同时访问同一个文档中的多处不同数据。

2.3 JDOM

JDOM 自身不包含解析器,它通常使用 SAX2 解析器来解析和验证输入 XML 文档。
JDOM 的目的是成为 Java 特定文档模型,仅使用具体类而不使用接口,API 大量使用了 Collections 类,简化了与 XML 的交互,并且比使用 DOM 实现更快。

2.4 DOM4J

DOM4J 合并了许多超出基本 XML 文档表示的功能,包括集成的 XPath 支持、XML Schema 支持以及用于大文档或流化文档的基于事件的处理。它还提供了构建文档表示的选项,它通过 DOM4J API 和标准 DOM 接口具有并行访问功能。

DOM4J 是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件。

3、DTD vs. XML Schema

XML Schema 指定 XML Schema 定义语言,该语言提供了描述 XML 1.0 文档结构和限制其内容的工具,其中包括那些利用 XML Namespace 的工具。模式语言自身用 XML 1.0 表示并使用名称空间,它在很大程度上重构了 XML 1.0 DTD 具有的能力,并在一定程度上扩展了这些能力。


DTD 的局限性:
  
□ 对于复杂需求通常很难使用内容模型。
□ 不支持名称空间。
□ 对模块化和重用的支持非常有限。
□ 不支持对声明扩展或继承。
□ 编写、维护和读取大型 DTD 以及定义系列相关模式都很困难。
□ 没有嵌入式、结构化自我文档编制(self-documentation)(只有 可用)。
□ 内容和属性声明不能依靠属性或元素上下文(许多 XML 语言用到这一点,但它们的 DTD 必须“允许过多东西”)。
□ 只能使用一个简单的标识属性机制(换句话说,没有唯一性作用域)。
  
XML Schema 的局限性:
  
□ XML Schema 比较复杂;只需要偶尔使用 XML 的程序员可能觉得它难得有些过头。
□ XML Schema 不能请求特定的根元素(因此,即使验证最简单的文档也要求额外的信息)。
□ 当描述混合内容时,根本无法约束字符数据。
□ 内容和属性声明不能依靠属性或元素上下文(这也是 DTD 的主要问题)。
□ 不能离开声明指定缺省值。
□ 元素缺省值只能是字符数据(不包含标记)。

posted on 2006-07-12 17:29 Xu Jianxiang 阅读(454) 评论(0)  编辑  收藏 所属分类: Open Source

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问