`
刘琛颖
  • 浏览: 48154 次
  • 性别: Icon_minigender_1
  • 来自: 成都
最近访客 更多访客>>
社区版块
存档分类
最新评论

Dom4j笔记总结《入门总结》

阅读更多
   1. Parsing XML  
   2.   
   3.     或许你想要做的第一件事情就是解析一个某种类型的XML文档,用dom4j很容易做到。请看下面的示范代码:  
   4.   
   5. import java.net.URL;  
   6.   
   7. import org.dom4j.Document;  
   8. import org.dom4j.DocumentException;  
   9. import org.dom4j.io.SAXReader;  
  10.   
  11. public class Foo {  
  12.   
  13.     public Document parse(URL url) throws DocumentException {  
  14.         SAXReader reader = new SAXReader();  
  15.         Document document = reader.read(url);  
  16.         return document;  
  17.     }  
  18. }  
  19. 使用迭代器(Iterators)  
  20.     我们可以通过多种方法来操作XML文档,这些方法返回java 里标准的迭代器(Iterators)。例如:  
  21.   
  22. public void bar(Document document) throws DocumentException {  
  23.         Element root = document.getRootElement();  
  24.         //迭代根元素下面的所有子元素  
  25.         for ( Iterator i = root.elementIterator(); i.hasNext(); ) {  
  26.             Element element = (Element) i.next();  
  27.             //处理代码  
  28.         }  
  29.   
  30.         //迭代根元素下面名称为"foo"的子元素  
  31.         for ( Iterator i = root.elementIterator( "foo" ); i.hasNext(); ) {  
  32.             Element foo = (Element) i.next();  
  33.             //处理代码  
  34.         }  
  35.   
  36.         // 迭代根元素的属性attributes)元素  
  37.         for ( Iterator i = root.attributeIterator(); i.hasNext(); ) {  
  38.             Attribute attribute = (Attribute) i.next();  
  39.             // do something  
  40.         }  
  41.      }  
  42. 强大的XPath导航  
  43.     在dom4j中XPath可以表示出在XML树状结构中的Document 或者任意的节点(Node)(例如:Attribute,Element 或者ProcessingInstruction等)。它可以使在文档中复杂的操作仅通过一行代码就可以完成。例如:  
  44.   
  45. public void bar(Document document) {  
  46.         List list = document.selectNodes( "//foo/bar" );  
  47.         Node node = document.selectSingleNode( "//foo/bar/author" );  
  48.         String name = node.valueOf( "@name" );  
  49.     }  
  50.   
  51.     如果你想得到一个XHTML文档中的所有超文本链接(hypertext links)你可以使用下面的代码:  
  52.   
  53.     public void findLinks(Document document) throws DocumentException {  
  54.   
  55.         List list = document.selectNodes( "//a/@href" );  
  56.   
  57.         for (Iterator iter = list.iterator(); iter.hasNext(); ) {  
  58.             Attribute attribute = (Attribute) iter.next();  
  59.             String url = attribute.getValue();  
  60.         }  
  61.     }  
  62.     如果你需要关于XPath语言的任何帮助,我们强烈推荐这个站点Zvon tutorial他会通过一个一个的例子引导你学习。  
  63. 快速遍历(Fast Looping)  
  64. 如果你不得不遍历一个非常大的XML文档,然后才去执行,我们建议你使用快速遍历方法(fast looping method),它可以避免为每一个循环的节点创建一个迭代器对象,如下所示:  
  65.   
  66. public void treeWalk(Document document) {  
  67.         treeWalk( document.getRootElement() );  
  68.     }  
  69.   
  70.     public void treeWalk(Element element) {  
  71.         for ( int i = 0, size = element.nodeCount(); i < size; i++ ) {  
  72.             Node node = element.node(i);  
  73.             if ( node instanceof Element ) {  
  74.                 treeWalk( (Element) node );  
  75.             }  
  76.             else {  
  77.                 // do something....  
  78.             }  
  79.         }  
  80.     }  
  81. 生成一个新的XML文档对象  
  82.     在dom4j中你可能常常希望用程序生成一个XML文档对象,下面的程序为你进行了示范:  
  83.   
  84. import org.dom4j.Document;  
  85. import org.dom4j.DocumentHelper;  
  86. import org.dom4j.Element;  
  87.   
  88. public class Foo {  
  89.   
  90.     public Document createDocument() {  
  91.         Document document = DocumentHelper.createDocument();  
  92.         Element root = document.addElement( "root" );  
  93.   
  94.         Element author1 = root.addElement( "author" )  
  95.             .addAttribute( "name", "James" )  
  96.             .addAttribute( "location", "UK" )  
  97.             .addText( "James Strachan" );  
  98.           
  99.         Element author2 = root.addElement( "author" )  
 100.             .addAttribute( "name", "Bob" )  
 101.             .addAttribute( "location", "US" )  
 102.             .addText( "Bob McWhirter" );  
 103.   
 104.         return document;  
 105.     }  
 106. }  
 107. 将一个文档对象写入文件中  
 108.     将一个文档对象写入Writer对象的一个简单快速的途径是通过 write()方法。  
 109.   
 110.         FileWriter out = new FileWriter( "foo.xml" );  
 111.         document.write( out );  
 112.   
 113. 如果你想改变输出文件的排版格式,比如你想要一个漂亮的格式或者是一个紧凑的格式,或者你想用Writer 对象或者OutputStream 对象来操作,那么你可以使用XMLWriter 类。  
 114.   
 115. import org.dom4j.Document;  
 116. import org.dom4j.io.OutputFormat;  
 117. import org.dom4j.io.XMLWriter;  
 118.   
 119. public class Foo {  
 120.   
 121.     public void write(Document document) throws IOException {  
 122.   
 123.         // 写入文件  
 124.         XMLWriter writer = new XMLWriter(  
 125.             new FileWriter( "output.xml" )  
 126.         );  
 127.         writer.write( document );  
 128.         writer.close();  
 129.   
 130.   
 131.         // 以一种优雅的格式写入System.out对象  
 132.         OutputFormat format = OutputFormat.createPrettyPrint();  
 133.         writer = new XMLWriter( System.out, format );  
 134.         writer.write( document );  
 135.   
 136.         // 以一种紧凑的格式写入System.out对象  
 137.         format = OutputFormat.createCompactFormat();  
 138.         writer = new XMLWriter( System.out, format );  
 139.         writer.write( document );  
 140.     }  
 141. }  
 142. 转化为字符串,或者从字符串转化  
 143.     如果你有一个文档(Document)对象或者任何一个节点(Node)对象的引用(reference),象属性(Attribute)或者元素(Element),你可以通过asXML()方法把它转化为一个默认的XML字符串:  
 144.   
 145.         Document document = ...;  
 146.         String text = document.asXML();  
 147.   
 148. 如果你有一些XML内容的字符串表示,你可以通过DocumentHelper.parseText()方法将它重新转化为文档(Document)对象:  
 149.   
 150.         String text = "<person> <name>James</name> </person>";  
 151.         Document document = DocumentHelper.parseText(text);  
 152. 通过XSLT样式化文档(Document)  
 153.     使用Sun公司提供的JAXP API将 XSLT 应用到文档(Document)上是很简单的。它允许你使用任何的XSLT引擎(例如:Xalan或SAXON等)来开发。下面是一个使用 JAXP创建一个转化器(transformer),然后将它应用到文档(Document)上的例子:  
 154.   
 155. import javax.xml.transform.Transformer;  
 156. import javax.xml.transform.TransformerFactory;  
 157.   
 158. import org.dom4j.Document;  
 159. import org.dom4j.io.DocumentResult;  
 160. import org.dom4j.io.DocumentSource;  
 161.   
 162. public class Foo {  
 163.   
 164.     public Document styleDocument(  
 165.         Document document,   
 166.         String stylesheet  
 167.     ) throws Exception {  
 168.   
 169.         // 使用 JAXP 加载转化器  
 170.         TransformerFactory factory = TransformerFactory.newInstance();  
 171.         Transformer transformer = factory.newTransformer(   
 172.             new StreamSource( stylesheet )   
 173.         );  
 174.   
 175.         // 现在来样式化一个文档(Document)  
 176.         DocumentSource source = new DocumentSource( document );  
 177.         DocumentResult result = new DocumentResult();  
 178.         transformer.transform( source, result );  
 179.   
 180.         // 返回经过样式化的文档(Document)  
 181.         Document transformedDoc = result.getDocument();  
 182.         return transformedDoc;  
 183.     }  
 184. }  

 

分享到:
评论

相关推荐

    DOM4J笔记.学习如何应用DOM4J开发XML

    DOM4J笔记.学习如何应用DOM4J开发XML

    XML DOM4J学习笔记

    自己的XML DOM4J学习笔记 自己的XML DOM4J学习笔记

    dom4j dom4j dom4j dom4j

    dom4j dom4j dom4j dom4j dom4j dom4j

    DOM4J jar包 xml解析 所有的dom4j-1.6.1 dom4j-2.0.2 dom4j-2.1.1包 导入直接使用

    DOM4J jar包 所有的包 xml解析 dom4j-1.6.1 dom4j-2.0.2 dom4j-2.1.1 导入直接使用

    dom4j-2.1.1-API文档-中英对照版.zip

    赠送jar包:dom4j-2.1.1.jar; 赠送原API文档:dom4j-2.1.1-javadoc.jar; 赠送源代码:dom4j-2.1.1-sources.jar; 赠送Maven依赖信息文件:dom4j-2.1.1.pom; 包含翻译后的API文档:dom4j-2.1.1-javadoc-API文档-...

    JavaEE源代码 dom4j-1.6.1

    JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源...

    dom4j-2.1.1-API文档-中文版.zip

    赠送jar包:dom4j-2.1.1.jar; 赠送原API文档:dom4j-2.1.1-javadoc.jar; 赠送源代码:dom4j-2.1.1-sources.jar; 赠送Maven依赖信息文件:dom4j-2.1.1.pom; 包含翻译后的API文档:dom4j-2.1.1-javadoc-API文档-...

    xml&dom&sax&dom4j 代码编写和总结

    对于xml&dom&sax&dom4j 文件解析的代码总结

    dom4j-1.6.1 与 dom4j-2.0.0-ALPHA

    dom4j-1.6.1.zip与 dom4j-2.0.0-ALPHA-2.jar

    我写的几个dom4j的入门例子.rar

    我写的几个dom4j的入门例子,有关读和写的常见功能。

    dom4j基础入门文档(SAX,DOM,XPATH)

    dom4j基础入门文档,与 W3C DOM API 相比,使用 dom4j 所包含的解析器的好处是 dom4j 拥有本地的 XPath 支持。

    dom4j_dom4j1.6.1安装包_

    maven dom4j 1.6.1安装包

    中文 DOM4j入门例子.txt

    中文 DOM4j入门例子 一。解析XML 二。使用迭代器: 三。强大的导航使用XPath: 四。快速循环 五。创建一个新的XML文档 六。记录到一个文件中的一个文件, 七。转换为字符串 八。用XSLT样式文档

    Dom4j 1.6.1 JAVA API

    dom4j帮助文档 官方API All Classes Packages org.dom4j org.dom4j.bean org.dom4j.datatype org.dom4j.dom org.dom4j.dtd org.dom4j.io org.dom4j.jaxb org.dom4j.rule org.dom4j.rule.pattern org.dom...

    dom4j常用方法

    dom4j常用方法 i.SAXReader sr = new SAXReader(); 生成解析器对象 ii.解析器对象.read(file对象); 解析文件生成Document对象 iii.文档对象.getRootElement() 获取跟元素节点 iv.元素节点.elements() 获取到指定...

    dom4j-1.6.1.jar (dom4j) 欢迎下载

    dom4j-1.6.1.jar,Dom4j是一个Java的XML API接口,是jdom的进化版,dom4j基本用来读写xml文件,是一个十分优秀的JavaXML API接口

    DOM4J帮助文档及使用教程

    这个压缩包是一个关于DOM4J的压缩包,里面包含了DOM4J的帮助文档,DOM4J的使用教程,以及DOM4J这个JAVA包。保证这个压缩包是网上面最全的有关DOM4J的文档。

    dom4j.rar=dom4j API+dom4j.jar

    dom4j.rar 包括dom4j API帮助文档和dom4j.jar包.dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点

    资源jar包dom4j-1.6.1.rar

    dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点,它的性能超过sun公司官方的dom技术,同时它也是一个开放源代码的...

    dom4j api 参考手册

    org.dom4j.bean An implementation of the dom4j API which allows JavaBeans to be used to store and retrieve attribute values from Element. org.dom4j.datatype An implementation of the dom4j API which ...

Global site tag (gtag.js) - Google Analytics