XML概述
属性文件可以用来描述程序配置。属性文件采用的是一种简单的平面层次结构,包含了一组名/值对。XML文件能够表示层次结构和重复
的元素而不会被曲解。XML文档以一个文档头开始,之后通常是文档类型定义(DTD),文档类型定义是确保文档正确的一个最要机制,但是不
是必需的。XML文档的正文包含根元素,根元素包含其他一些元素。元素可以有子元素、文本、属性。
通过调用System.getProperties()可以获得当前系统属性:
这个系统属性集合总是包含以下键的值:
解析XML文档
Java库提供两种XML解析器:
*文档对象模型解析器(DOM),将读入的XML文档转换成树结构。
*流机制解析器,在读入XML文档时生成相应的事件。
DOM解析器:org.w3c.dom包包含了接口类型的定义。Document对象是XML文档的树型结构在内存中的表现。它由实现Node接口
及其多个子接口的类的对象构成。可以通过调用getDocumentElement方法来分析文档的内容,它将返回根元素。getTagName方法可以
返回元素的标签名。使用getChildNodes方法可以返回一个类型为NodeList集合的子元素。
流机制解析器:SAX解析器使用的是事件回调,而StAX解析器提供了解析事件的迭代器。
SAX解析器:SAX解析器在解析XML输入的构件时就报告事件,但不会以任何方式存储文档。由事件处理器决定是否要建立数据
结构。实际上,DOM解析器是在SAX解析器的基础上建立起来的,它在接收到解析器事件时建立DOM树。在使用SAX解析器时,需要
一个处理器来定义不同的解析器事件的事件动作。ContentHandler接口定义了若干个回调方法:
*startElement和endElement在每当遇到起始或终止标签时调用。
*characters每当遇到字符数据时调用。
*startDocument和endDocument在文档开始和结束时各调用一次。
StAX解析器:是用一种“拉解析器”,与安装事件处理器不同,只需基本循环来迭代所有事件。
验证XML文档
XML解析器能自动检验某个文档是否正确。如果要规范文档结构,可以提供一个文档类型定义(DTD)或一个XML Schema定义。DTD
或schema包含了用于解释文档时如何构成的规则。这些规则规范了每个元素的合法子元素和属性。
使用XPath来定位信息
如果要定位某个XML文档中的一段特定信息,那么通过遍历DOM树的众多节点来进行查找显得有些麻烦。XPath语言使得访问树节点
变得很容易。需要先从XPathFactory创建一个XPath对象,然后调用evaluate方法来计算XPath表达式。
生成XML文档
一种比较好的方法是用文档的内容构建一颗DOM树,然后再写出该树的所有内容。目前还不支持把DOM树写到输出流,我们可以使用
可扩展的格式页转换API。
使用StAX写XML文档:从某个OutputStream中构建一个XMLStreamWriter可以直接将XML树写出。