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

2019-05-27 08:13:05于海丽

 //设置XSLT引擎的属性(必不可少,否则会产生"汉字问题")。
 Properties properties = t.getOutputProperties();
 properties.setProperty(OutputKeys.ENCODING,"GB2312");
 t.setOutputProperties(properties);

 //关键的一步, 调用Transformer对象 (XSLT引擎)的transform()方法,该方法的第一
 //个参数是DOMSource对象,第二个参数是DOMResult对象。
 t.transform(domSource,domResult);

 //创建缺省的Xalan XML Serializer,使用它将临时存放在DOMResult对象
 //(domResult)中的内容以输出流的形式输出到输出介质中。
 Serializer serializer = SerializerFactory.getSerializer
(OutputProperties.getDefaultMethodProperties("xml"));

 //设置Xalan XML Serializer的输出属性,这一步必不可少,否则也可能产生
 //所谓的"汉字问题"。
 Properties prop=serializer.getOutputFormat();
 prop.setProperty("encoding","GB2312");
 serializer.setOutputFormat(prop);

 //创建一个File对象,代表DOM Tree所包含的数据的输出介质,这是一个XML文件。
 File f = new File ("xuser3.xml");

 //创建文件输出流对象fos,请留意构造函数的参数。
 FileOutputStream fos=new FileOutputStream(f);

 //设置Xalan XML Serializer的输出流。
 serializer.setOutputStream(fos);

 //串行化输出结果。
 serializer.asDOMSerializer().serialize(domResult.getNode());
}
catch (Exception tce)
{
 tce.printStackTrace();
}
  这个方法不太常用,而且似乎有点画蛇添足,所以我们就不展开讨论了。完整的例子请参考下列文件: AddRecord4.java(见附件)、user.xml(见附件)。该例子的运行环境为:Windows XP Professional、JDK 1.3.1。为了能够正常编译运行AddRecord4.java这个程序,你需要到网址http://xml.apache.org/dist/去下载安装Apache Xalan和Apache Xerces。

  或者是到网址http://java.sun.com/xml/download.html去下载安装Java XML Pack。因为最新的Java XML Pack(Winter 01 版)包含了Apache Xalan和Apache Xerces技术在内。

  结论:

  本文简略的讨论了Java语言编程中更新XML文档的四种方法。第一种方法是直接读写XML文件,这种方法十分繁琐,而且比较容易出错,极少使用,除非你需要开发自己的XML Parser,否则不会使用这种方法。第二种方法是使用Apache Crimson的XmlDocument类,这种方法极为简单,使用方便,如果你选用Apache Crimson作为XML解析器,那么不妨使用这种方法,不过这种方法似乎效率不高(源于效率低下的Apache Crimson),另外,高版本的JAXP或者是Java XML Pack、JWSDP不直接支持Apache Crimson,亦即这种方法不通用。第三种方法是使用JAXP的XSLT引擎(Transformer类)来输出XML文档,这种方法也许是标准的方法了,使用起来十分灵活,特别是可以自如控制输出格式,我们推荐采用这种方法。第四种方法是第三种方法的变种,采用了Xalan XML Serializer,引入了串行化操作,对于大量文档的修改/输出有优越性,可惜的是要重复设置XSLT引擎的属性和XML Serializer的输出属性,比较麻烦,而且依赖于Apache Xalan和Apache Xerces技术,通用性略显不足。