快速业务通道

Java中的XML: Java文档模型的用法 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20
else if (child.getNodeType() == Node.ELEMENT_NODE) { 21    // handle child elements with recursive call 22    modifyElement((Element)child); 23   } 24  } 25 }

清单 7 中 dom4j modify 方法与 JDOM 中使用的方法非常类似。不通过使用 instanceof 运算符来检查内容项的类型,我可以通过 Node 接口方法 getNodeType 来获取类型代码(也可以使用 instanceof ,但类型代码方法看起来更清晰)。通过使用 QName 对象来表示元素名称和通过调用已保存的工厂的方法来构建元素可以区别新元素的创建技术(第 15-16 行)。

Electric XML

清单 8 中 Electric XML(EXML)的顶级代码是任何这些示例中最简单的一个,通过单一方法调用就可以读取和编写文档。

清单 8. EXML 顶级代码

1 // parse the document from input stream 2 Document doc = new Document(in); 3 // recursively walk and modify document 4 modifyElement(doc.getRoot()); 5 // write the document to output stream 6 doc.write(out);

Java中的XML: Java文档模型的用法(5)

时间:2011-01-25 IBM Dennis M. Sosnoski

清单 9 中 EXML modify 方法尽管与 JDOM 一样,需要使用 instanceof 检查,但它与 DOM 方法最相似。在 EXML 中,无法创建一个带名称空间限定的名称的元素,所以取而代之,我创建新元素,然后设置其名称来达到相同的效果。

清单 9. EXML modify 方法

1 protected void modifyElement(Element element) { 2  // loop through child nodes 3  Child child; 4  Child next = element.getChildren().first(); 5  while ((child = next) != null) { 6   // set next before we change anything 7   next = child.getNextSibling(); 8   // handle child by node type 9   if (child instanceof Text) { 10    // trim whitespace from content text 11    String trimmed = ((Text)child).getString().trim(); 12    if (trimmed.length() == 0) { 13     // delete child if only whitespace 14     child.remove(); 15    } else { 16     // wrap the trimmed content with new element 17     Element text = new Element(); 18     text.addText(trimmed); 19     child.replaceWith(text); 20     text.setName(element.getPrefix(), "text"); 21    } 22   } else if (child instanceof Element) { 23    // handle child elements with recursive call 24    modifyElement((Element)child); 25   } 26  } 27 }

XPP

XPP 的顶级代码(在清单 10 中)是所有示例中最长的一个,与其它模型相比,它需要相当多的设置。

清单 10. XPP 顶级代码

1 // parse the document from input stream 2 m_parserFactory = XmlPullParserFactory.newInstance(); 3 m_parserFactory.setNamespaceAware(true); 4 XmlPullParser parser = m_parserFactory.newPullParser(); 5 parser.setInput(new BufferedReader(new InputStreamReader(in))); 6 parser.next(); 7 XmlNode doc = m_parserFactory.newNode(); 8 parser.readNode(doc); 9 // recursively walk and modify document 10 modifyElement(doc); 11 // write the document to output stream 12 XmlRecorder recorder = m_parserFactory.newRecorder(); 13 Writer writer = new OutputStreamW

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号