JAVA编程中更新XML文档的常用方法

JAVA编程中更新XML文档的常用方法,第1张

JAVA编程中更新XML文档的常用方法,第2张

简要讨论了Java编程中更新XML文档的四种常用方法,并分析了这四种方法的优缺点。其次,本文还讨论了Java程序如何控制XML文档输出的格式。

JAXP是Java API for XML Processing的缩写,中文意思是:用Java语言编写的用于XML文档处理的编程接口。JAXP支持DOM、SAX、XSLT和其他标准。为了增强JAXP的灵活性,开发商专门为JAXP设计了一个可插拔层。在可插拔层的支持下,JAXP可以与各种专门实现DOM API和SAX API的XML解析器(如Apache Xerces)协同工作。它还可以与专门实现XSLT标准XSLT处理器(如Apache Xalan)协同工作。应用Pluggability层的好处是,我们只需要熟悉JAXP的各种编程接口的定义,而不需要对具体的XML解析器和XSLT处理器有深入的了解。例如,在一个Java程序中,XML解析器Apache Crimson被JAXP调用来处理XML文档。如果我们想使用其他的XML解析器(比如Apache Xerces)来提高程序的性能,那么原来的程序代码可能不需要做任何改动。您可以直接使用它(您需要做的只是将包含Apache Xerces代码的jar文件添加到环境变量CLASSPATH中,并从环境变量CLASSPATH中删除包含Apache Crimson代码的jar文件)。

目前,JAXP已被广泛使用。可以说,JAXP是Java语言处理XML文档的标准API。一些初学者在学习使用JAXP的过程中经常会问这个问题:我写的程序更新了DOM树,但是程序退出后,原来的XML文档并没有改变,还是原来的样子。如何实现原XML文档和DOM树的同步更新?乍一看,JAXP似乎没有对应的接口/方法/类,这是很多初学者都很困惑的问题。本文的目的就是解决这个问题,简单介绍几种常见的同步更新原始XML文档和DOM树的方法。缩小讨论范围,本文涉及的XML解析器只包括Apache Crimson和Apache Xerces,而XSLT处理器只使用Apache Xalan。

方法一:直接读写XML文档。

这大概是最笨最原始的方式了。在程序获得DOM树之后,它通过使用DOM模型的节点接口的方法更新DOM树。下一步是更新原始XML文档。我们可以通过递归或应用TreeWalker类来遍历整个DOM树。同时,DOM树的每个节点/元素被依次写入预先打开的原始XML文档中。当DOM树遍历完毕后,DOM树和原始XML文档同步更新。实际上,这种方法很少使用,但是如果您想编写自己的XML解析器,这种方法可能仍然有用。

方法2:使用XmlDocument类

使用XmlDocument类?JAXP显然没有这样的阶级!作者错了吗?没有错!使用XmlDocument类,特别是XmlDocument类的write()方法。

如上所述,JAXP可以与各种XML解析器结合使用。这一次,我们选择的XML解析器是Apache Crimson。XML document(org . Apache . Crimson . tree . XML document)是Apache Crimson的一个类,不包含在标准JAXP中。难怪在JAXP的文档中没有XmlDocument类的踪迹。现在问题出来了,如何应用XmlDocument类实现更新XML文档的功能?XmlDocument类中提供了以下三个write()方法(根据最新版本的Crimson - Apache Crimson 1.1.3):

public void write(output stream out)抛出IOException
public void write(Writer out)抛出io exception
public void write(Writer out,字符串编码)抛出io exception

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » JAVA编程中更新XML文档的常用方法

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情