- 讲师:刘萍萍 / 谢楠
- 课时:160h
- 价格 4580 元
特色双名师解密新课程高频考点,送国家电网教材讲义,助力一次通关
配套通关班送国网在线题库一套
百度广告
在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 javax.xml.parsers. *; //XML解析器接口 import org.apache.crimson.tree.XmlDocument;//写XML文件要用到 Import javax.xml.transform.dom. *; |
Private Boolean is Merging (String mainFileName, String sub Filename) throws Exception { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); Try { } Catch (ParserConfigurationException pce) { } //获取两个XML文件的Document。 Doc_main = db.parse (mainFileName); } Catch (DOM Exception dom) { } Catch (Exception ioe) { } Element root_main = doc_main.getDocumentElement (); //下面添加被合并文件根节点下的每个元素 Int item_number = messageItems.getLength (); For (int i=1; i < item_number; i=i+2 ) { Element messageItem = (Element) messageItems.item (i); } Boolean isWritten = write To (doc_main, mainFileName); } |
Private Boolean dupliate (Document doc_dup, Element father, Element son) throws Exception { String son_name = son.getNodeName (); //复制节点的属性 NamedNodeMap attributes = son.getAttributes (); String attribute_name = attributes. Item (i). GetNodeName (); SubITEM.setAttribute (attribute_name, attribute_value); } //复制节点的值 String nodevalue_root = ""; 0) nodevalue_root = (String) value_son.getNodeValue (); If ((nodevalue_root! = null)&&(nodevalue_root.length () > 0)) valuenode_root = doc_dup.createTextNode (nodevalue_root); 0) subITEM.appendChild (valuenode_root); Novelist sub_messageItems = son.getChildNodes (); if (sub_item_number < 2){ Is done = true; Else { //如果有子节点,则递归调用本方法 Is done = dupliate (doc_dup, subITEM, sub_messageItem); } } |
Private Boolean write To (Document doc, String fileName) throws Exception { DOM Source doms = new DOM Source (doc); Stream Result sr = new Stream Result (f); { Transformer t=tf.newTransformer (); Properties.setProperty (OutputKeys.ENCODING,"GB2312"); T.transform (doms, sr); } { } { } } |
Public static void main (String args) throws Exception { If (is Done) System.out.println ("XML files have been merged."); } |
介绍了如何利用JAVA中的XML解析器,合并两个XML文档。当然,在合并的过程中,还可以加入其他的约束条件,比如要求过滤掉特定的元素等。另外,复制元素的插入位置也可以加以限制。
责编:罗莉
课程专业名称 |
讲师 |
课时 |
查看课程 |
---|
课程专业名称 |
讲师 |
课时 |
查看课程 |
---|
点击加载更多评论>>