• 首  页
  • 最新公告
  • 域名帮助
  • 空间帮助
  • 主机帮助
  • 邮局帮助
  • 数据库帮助
  • 网站建设帮助
  • 财务帮助
  • CDN加速
  • 最新公告
  • 域名帮助
  • 空间帮助
    • VPS主机
    • 虚拟主机
  • 主机帮助
    • win服务器应用及安全
    • linux服务器应用及安全
  • 邮局帮助
  • 数据库帮助
    • MSSQL数据库
    • ORACLE数据库
    • ACCESS数据库
    • MYSQL数据库
    • 数据库基础与原理
  • 网站建设帮助
    • Html语言教程
    • ASP语言程序
    • PHP语言程序
    • DIV+CSS语言程序
    • SEO优化教程
    • JAVA语言程序
  • 财务帮助
  • CDN加速
千喜网络 ---网站建设帮助 ---JAVA语言程序
Java更新XML的四种常用方法简介_JAVA实例教程_IT部落
发布时间:2012-7-24 21:43:36   阅读次数:
 

本文简要的讨论了Java语言编程中更新XML文档的四种常用方法,并且分析这四种方法的优劣。其次,本文还对如何控制Java程序输出的XML文档的格式做了展开论述。

JAXP是Java API for XML Processing的英文字头缩写,中文含义是:用于XML文档处理的使用Java语言编写的编程接口。JAXP支持DOM、SAX、XSLT等标准。为了增强JAXP使用上的灵活性,开发者特别为JAXP设计了一个Pluggability Layer,在Pluggability Layer的支持之下,JAXP既可以和具体实现DOM API、SAX API 的各种XML解析器(XML Parser,例如Apache Xerces)联合工作,又可以和具体执行XSLT标准的XSLT处理器(XSLT Processor,例如Apache Xalan)联合工作。

应用Pluggability Layer的好处在于:我们只需要熟悉JAXP各个编程接口的定义即可,而不需要对所采用的具体的XML解析器、XSLT处理器有很深入的了解。比如在某个Java程序中,通过JAXP调用XML解析器Apache Crimson对XML文档进行处理,如果我们希望使用别的XML解析器(比如Apache Xerces),以便提高该程序的性能,那么原程序代码可能不需要任何改变,直接就可以使用(你所需要做的事情只是将包含Apache Xerces代码的jar文件加入到环境变量CLASSPATH中,而将包含Apache Crimson代码的jar文件在环境变量CLASSPATH中删除)。

目前JAXP已经应用的十分普遍了,可以说是Java语言中处理XML文档的标准API。有些初学者在学习使用JAXP的过程中,经常会提出这样的问题:我编写的程序对DOM Tree做了更新,但是当程序退出以后,原始的XML文档并没有改变,还是老样子,如何实现对原始XML文档和DOM Tree的同步更新呢?咋一看来,在JAXP中似乎没有提供相应的接口/方法/类,这是很多初学者都感到困惑的问题。

本文的主旨就在于解决这个问题,简单的介绍几种常用的同步更新原始XML文档和DOM Tree的方法。为了缩小讨论的范围,本文所涉及的XML解析器仅包括Apache Crimson和Apache Xerces,而XSLT处理器仅仅使用Apache Xalan。

方法一:直接读写XML文档

这也许是最笨最原始的办法了。当程序获取DOM Tree之后,应用DOM模型的Node接口的各个方法对DOM Tree进行更新,下一步应该对原始的XML文档进行更新了。我们可以运用递归的办法或者是应用TreeWalker类,遍历整个DOM Tree,与此同时,将DOM Tree的每一个节点/元素依次写入到预先打开的原始XML文档中,当DOM Tree被遍历完全之后,DOM Tree和原始的XML文档就实现了同步更新。实际中,这个方法极少使用,不过如果你要编程实现自己的XML解析器,这种方法还是有可能用得上的。

方法二:使用XmlDocument类

使用XmlDocument类?JAXP中分明没有这个类呀!是不是作者搞错了?没有错!就是使用XmlDocument类,确切的说,是使用XmlDocument类的write()方法。

在上文已经提到过,JAXP可以和各种各样的XML解析器联合使用,这次我们选用的XML解析器是Apache Crimson。XmlDocument(org.apache.crimson.tree.XmlDocument)是Apache Crimson的一个类,并不包含于标准的JAXP中,难怪在JAXP的文档中找不到XmlDocument类的芳踪呢。现在问题出来了,如何应用XmlDocument类来实现更新XML文档的功能?在XmlDocument类中提供了下面三个write()方法(根据Crimson最新的版本------Apache Crimson 1.1.3):

public void write (OutputStream out) throws IOException

public void write (Writer out) throws IOException

public void write (Writer out, String encoding) throws IOException

上述三个write()方法的主要作用就是输出DOM Tree中的内容到特定的输出介质中,比如文件输出流、应用程序控制台等等。那么又如何使用上述三个write()方法呢?请看下面的Java程序代码片断:

 String name="fancy";

网站关键词:千喜网络 云主机租用 服务器托管 CDN加速 虚拟主机 网站空间 域名注册 企业邮局 数据库
上一章:使用异步Servlet扩展AJAX应用程序_JAVA实例教程_IT部落   下一章:如何编写一个JAVA的队列类?_JAVA实例教程_IT部落   
中华人民共和国增值电信业务经营许可证:陕B2-20100043
地址:西安市莲湖路37号省外贸大楼623室 全国统一服务热线:400-600-7112
CopyRight@2009-2012 Qianxinet.com 版权所有 西安千喜网络科技有限公司