下载本文示例代码
摘 要:介绍了XML应用中合并XML文档的方法与应用,在基于XML的应用中,有着广泛的应用前景。 关键词:XML文档 解析器 元素 在XML应用中,最常用也最实用的莫过于XML文件的读写。由于XML语义比较严格,起始标记必须配对,所以合并XML文档并不像合并普通文件那样简单。在JAVA中,如何合并XML文档,下面介绍一种方法。 设计思想 应用javax.xml.parsers包中的解析器解析得到两个XML文件的根元素,再采用递归的方式逐一复制被合并文件的元素。
实现过程 为了读写XML文件,需要导入如下JAVA包,"//"后为注释说明,笔者的环境是JDK 1.3.1,在JDK 1.4.0中测试也通过。
Import java.io. *; //Java基础包,包含各种IO操作 Import java.util. *; //Java基础包,包含各种标准数据结构操作 Import javax.xml.parsers. *; //XML解析器接口 Import org.w3c.dom. *; //XML的DOM实现 import org.apache.crimson.tree.XmlDocument;//写XML文件要用到Import javax.xml.transform. *;Import javax.xml.transform.dom. *;Import javax.xml.transform.stream. *; 下面介绍合并XML文档的过程。先说明一下各个方法的作用。方法is Merging()有两个参数(分别是目标XML文件名和被合并的XML文件名),调用JAVA的解析器,获得两个要合并的XML文档的Document结构和根元素,并调用方法duplicate()和方法write To()。当然,在XML文档的合并过程中,可以加入另外的一些判断条件,比如,当被合并XML文档不存在时,将如何处理,等等。
Private Boolean is Merging (String mainFileName, String sub Filename) throws Exception { Boolean isOver = false; DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); Document Builder db = null; Try { Db = dbf.newDocumentBuilder (); } Catch (ParserConfigurationException pce) { System.err.println(pce); //出现异常时,输出异常信息 } Document doc_main = null,doc_vice = null; //获取两个XML文件的Document。 Try { Doc_main = db.parse (mainFileName); Doc_vice = db.parse (sub Filename); } Catch (DOM Exception dom) { System.err.println (dom.getMessage ()); } Catch (Exception ioe) { System.err.println (ioe); } //获取两个文件的根元素。 Element root_main = doc_main.getDocumentElement (); Element root_vice = doc_vice.getDocumentElement (); //下面添加被合并文件根节点下的每个元素 Novelist message Items = root_vice.getChildNodes (); Int item_number = messageItems.getLength (); //如果去掉根节点下的第一个元素,比如 ,那么i从3开始。否则i从1开始。 For (int i=1; i < item_number; i=i 2 ) { //调用dupliate(),依次复制被合并XML文档中根节点下的元素。 Element messageItem = (Element) messageItems.item (i); IsOver = dupl