XML编程
就是:写java程序操作XML文档。增删改查(CRUD)create read update delete
XML解析方式
分为两种:dom和sax。操作XML文档,如果你想增删改,请用dom。如果你想查找,请用sax。
dom:
(Document Object Model, 即文档对象模型) 是 W3C 组织推荐的处理 XML 的一种方式。
由于用dom解析方法解析,需要把所有节点都变成对象进内存,所以如果这个XML文件很大,这时java虚拟机就会跑不起来。
我们来看看java虚拟机的默认内存多大:64M
把java虚拟机内存改成80M:
这样就可以运行60M的程序了。因为java虚拟机它本身也占一定的内存。
等20秒,这个程序运行完毕,刚才给java虚拟机分配的内存就又还给电脑了。
在控制台这么改:
sax:
(Simple API for XML) 不是官方标准,但它是 XML 社区事实上的标准,几乎所有的 XML 解析器都支持它。
读取一行,解析一行。
特点:对内存消耗小,效率特别高。
但是sax方式不适合用,只适合用来在XML中查找数据。
XML解析器
支持这两种解析方式的一些解析器:
Crimson(sun)完败、Xerces(ibm) 都贡献给了apache。Aelfred2(dom4j)
由于程序员自己写程序去调用这些解析器比较困难。
sun公司为了我们方便的操作XML文档,又写了一些API对解析器进行了包装。
XML解析开发包
Jaxp(sun)这个API在1.4以前调用的是Crimson(sun)解析器,在1.5以后调用的是Xerces(ibm)解析器。
Jdom 的开发人员有了分裂,
dom4j(以前没有)分裂出来的开发人员又开发出了dom4j。完胜。使用的解析器是Aelfred2(dom4j)。
虽然dom4j完胜Jaxp(sun),但是我们还是要学Jaxp(sun),因为它是标准,现在不行,不代表将来不行。
JAXP
JAXP 开发包是J2SE的一部分,它由javax.xml、org.w3c.dom 、org.xml.sax 包及其子包组成.
在 javax.xml.parsers 包中,定义了几个工厂类,程序员调用这些工厂类,可以得到对xml文档进行解析的 DOM 或 SAX 的解析器对象。
使用JAXP进行DOM解析
javax.xml.parsers 包中的DocumentBuilderFactory用于创建DOM模式的解析器对象 , DocumentBuilderFactory是一个抽象工厂类,它不能直接实例化,但该类提供了一个newInstance方法 ,这个方法会根据本地平台默认安装的解析器,自动创建一个工厂的对象并返回。
获得JAXP中的DOM解析器:
- 调用 DocumentBuilderFactory.newInstance() 方法得到创建 DOM 解析器的工厂。
- 调用工厂对象的 newDocumentBuilder方法得到 DOM 解析器对象。
- 调用 DOM 解析器对象的 parse() 方法解析 XML 文档,得到代表整个文档的 Document 对象,进行可以利用DOM特性对整个XML文档进行操作了。
javax.xml.parsers
类 DocumentBuilderFactory
public abstract class DocumentBuilderFactory
构造方法摘要 | |
---|---|
protected |
DocumentBuilderFactory() 用于阻止实例化的受保护构造方法。 |
方法摘要 | |
---|---|
|