1. package com.dom4j;
  2.  
  3. import java.io.FileWriter;
  4. import java.io.IOException;
  5. import java.io.UnsupportedEncodingException;
  6. import java.util.Iterator;
  7. import java.util.List;
  8.  
  9. import javax.xml.transform.Transformer;
  10. import javax.xml.transform.TransformerConfigurationException;
  11. import javax.xml.transform.TransformerException;
  12. import javax.xml.transform.TransformerFactory;
  13. import javax.xml.transform.stream.StreamSource;
  14.  
  15. import org.dom4j.Attribute;
  16. import org.dom4j.Document;
  17. import org.dom4j.DocumentException;
  18. import org.dom4j.DocumentHelper;
  19. import org.dom4j.Element;
  20. import org.dom4j.Node;
  21. import org.dom4j.io.DocumentResult;
  22. import org.dom4j.io.DocumentSource;
  23. import org.dom4j.io.OutputFormat;
  24. import org.dom4j.io.SAXReader;
  25. import org.dom4j.io.XMLWriter;
  26.  
  27. public class Test1 {
  28. public static void main(String[] args){
  29. //C:/Users/Administrator.PMIMP83HWNIKWOV/Workspaces/MyEclipse 9/TestWeb/WebRoot/
  30. /**
  31. * 我使用绝对路径就会报错unknown protocol: c,不知道什么原因,现在使用的是相对路径,如果不好使用相对路径,直接使用File文件吧
  32. */
  33. //String uri="WebRoot/xml/languages.xml";
  34. //Document doc=praseXmlToDocument(uri);
  35. //System.out.println(doc.getRootElement().getName());
  36. //Iteratorasdom(doc);
  37. //navigation(doc);
  38. //treeWalk(doc);
  39. //Document doc=createDocument();
  40. //DocmentToFile(doc,"");
  41. StringToDoc();
  42.  
  43. }
  44.  
  45. public static Document praseXmlToDocument(String url){
  46. /**
  47. * 解析xml文件成document对象
  48. */
  49. Document document=null;
  50. try {
  51. SAXReader reader=new SAXReader();
  52.  
  53. document = reader.read(url);
  54. } catch (DocumentException e) {
  55. e.printStackTrace();
  56. }
  57. return document;
  58. }
  59.  
  60. public static void Iteratorasdom(Document document){
  61. /**
  62. * document获取根元素: .getRootElement()
  63. * Node类型获取所有字节点的迭代器 .elementIterator()
  64. * 获取指定名称的所有子节点的迭代器 .elementIterator(String name)
  65. * 获取所有属性的迭代器 .attributeIterator()
  66. */
  67. Element root=document.getRootElement();
  68. /*for(Iterator i=root.elementIterator();i.hasNext();){
  69. Element element=(Element) i.next();
  70. System.out.println(element.getName());
  71. for(Iterator it=element.attributeIterator();it.hasNext();){
  72. Attribute att=(Attribute) it.next();
  73. System.out.println(att.getName()+"="+att.getStringValue());
  74. }
  75. }*/
  76. for(Iterator i=root.elementIterator("lan");i.hasNext();){
  77. Element element=(Element) i.next();
  78. for(Iterator it=element.attributeIterator();it.hasNext();){
  79. Attribute att=(Attribute) it.next();
  80. System.out.println(att.getName()+"="+att.getStringValue());
  81. }
  82. }
  83. }
  84.  
  85. public static void navigation(Document document){
  86. /* 使用selectNodes需要使用jaxen.jar
  87. * .selectNodes("//languages/lan/name");获取所有指定名称节点的集合
  88. * .selectSingleNode("//languages/lan/name"); 获取第一个指定名称的节点
  89. * node和document对象都有这个方法
  90. * */
  91. /*List list=document.selectNodes("//languages/lan/name");
  92. for(int i=0;i<list.size();i++){
  93. Node node=(Node) list.get(i);
  94. System.out.println(node.getText());
  95. }*/
  96. Node node=document.selectSingleNode("//languages/lan/name");
  97. System.out.println(node.getText());
  98. }
  99.  
  100. /*遍历document或者element元素的方法*/
  101.  
  102. public static void treeWalk(Document document) {
  103. treeWalk( document.getRootElement() );
  104. }
  105.  
  106. public static void treeWalk(Element element) {
  107. for ( int i = 0, size = element.nodeCount(); i < size; i++ ) {
  108. Node node = element.node(i);
  109. if ( node instanceof Element ) {
  110. treeWalk( (Element) node );
  111. }
  112. else
  113. {
  114. System.out.println(node.getText());
  115. }
  116. }
  117. }
  118.  
  119. public static Document createDocument(){
  120. /**
  121. * 添加子元素.addElement(String name)
  122. * 添加属性 .addAttribute(key,value)
  123. * 添加值 .addText(String value)
  124. */
  125. Document document=DocumentHelper.createDocument();
  126. Element root=document.addElement("root");
  127.  
  128. Element author1=root.addElement("author")
  129. .addAttribute("name", "James")
  130. .addAttribute("location", "UK")
  131. .addText("James Strachan");
  132.  
  133. Element author2=root.addElement("author")
  134. .addAttribute("name", "Bob")
  135. .addAttribute("location", "US")
  136. .addText("Bob Mchirter");
  137.  
  138. return document;
  139. }
  140.  
  141. public static void DocmentToFile(Document doc,String uri){
  142. /* 第一种方法,使用XMLWriter对象的writer方法*/
  143. XMLWriter writer = null;
  144. /*try {
  145. writer=new XMLWriter(new FileWriter(uri));
  146. writer.write(doc);
  147. } catch (IOException e) {
  148. // TODO Auto-generated catch block
  149. e.printStackTrace();
  150. }*/
  151.  
  152. /*
  153. * 输出到控制台
  154. * */
  155. OutputFormat format=OutputFormat.createPrettyPrint();
  156. try {
  157. writer=new XMLWriter(System.out,format);
  158. } catch (UnsupportedEncodingException e) {
  159. // TODO Auto-generated catch block
  160. e.printStackTrace();
  161. }
  162. try {
  163. writer.write(doc);
  164. } catch (IOException e) {
  165. // TODO Auto-generated catch block
  166. e.printStackTrace();
  167. }
  168.  
  169. }
  170.  
  171. public static void StringToDoc(){
  172. /* 将docment对象转换称为xml */
  173. /*Document doc=createDocument();
  174. String text=doc.asXML();
  175. System.out.println(text);*/
  176. /* 将text对象转换称为document*/
  177. String text="<a><b>1</b><b>2</b><b>3</b></a>";
  178. try {
  179. Document document=DocumentHelper.parseText(text);
  180. treeWalk(document);
  181. } catch (DocumentException e) {
  182. // TODO Auto-generated catch block
  183. e.printStackTrace();
  184. }
  185. }
  186.  
  187. public static Document a(Document doc,String stylesheet) throws IOException{
  188. TransformerFactory factory=TransformerFactory.newInstance();
  189. Transformer transformer = null;
  190. try {
  191. transformer=factory.newTransformer(new StreamSource(stylesheet));
  192. } catch (TransformerConfigurationException e) {
  193. // TODO Auto-generated catch block
  194. e.printStackTrace();
  195. }
  196.  
  197. DocumentSource source=new DocumentSource(doc);
  198. DocumentResult result=new DocumentResult();
  199. try {
  200. transformer.transform( source, result );
  201. } catch (TransformerException e) {
  202. // TODO Auto-generated catch block
  203. e.printStackTrace();
  204. }
  205. Document transformedDoc = result.getDocument();
  206. XMLWriter writer = null;
  207.  
  208. writer=new XMLWriter(new FileWriter("doc.doc"));
  209. writer.write(transformedDoc);
  210.  
  211. return transformedDoc;
  212. }
  213.  
  214. }

简单使用dom4j的更多相关文章

  1. 简单用DOM4J结合XPATH解析XML

    由于DOM4J在解析XML时只能一层一层解析,所以当XML文件层数过多时使用会很不方便,结合XPATH就可以直接获取到某个元素 使用dom4j支持xpath的操作的几种主要形式    第一种形式   ...

  2. 详细说明XML分解(两)—DOM4J

    第一部分关于博客XML三接口,同时也为学习DOM4J该分析工具做准备.一般解析器基本上都实现了DOM和SAX这两组接口,DOM4J自然也不例外..DOM4J仅仅是经常使用解析器的当中一种,只是既然是实 ...

  3. 【java项目实战】dom4j解析xml文件,连接Oracle数据库

    简单介绍 dom4j是由dom4j.org出品的一个开源XML解析包.这句话太官方.我们还是看一下官方给出的解释.例如以下图: dom4j是一个易于使用的.开源的,用于解析XML,XPath和XSLT ...

  4. dom4j的测试例子和源码详解(重点对比和DOM、SAX的区别)

    目录 简介 DOM.SAX.JAXP和DOM4J xerces解释器 SAX DOM JAXP DOM解析器 获取SAX解析器 DOM4j 项目环境 工程环境 创建项目 引入依赖 使用例子--生成xm ...

  5. dom4j解析器 基于dom4j的xpath技术 简单工厂设计模式 分层结构设计思想 SAX解析器 DOM编程

    *1 dom4j解析器   1)CRUD的含义:CreateReadUpdateDelete增删查改   2)XML解析器有二类,分别是DOM和SAX(simple Api for xml).     ...

  6. dom4j 简单使用

    1,需要用到dom4j的jar包.为了打开xml方便,设计一个简单的封装类. package cn.com.gtmc.glaf2.util; import java.io.File; import j ...

  7. java 开发中 dom4j的简单用法

    Java中处理XML的方式有很多种,个人任务dom4j还是比较好用的.下面介绍以下简单的使用方法 先把import补充上 import org.dom4j.Document; import org.d ...

  8. dom4j最常用最简单的方法

    要使用dom4j读写XML文档,需要先下载dom4j包,dom4j官方网站在 http://www.dom4j.org/目前最新dom4j包下载地址:http://nchc.dl.sourceforg ...

  9. java代码用dom4j解析xml文件的简单操作

    时间: 2016/02/17 目标:为telenor的ALU Femto接口写一个采集xml文件并解析出locationName标签里的值,然后更新到数据库中. 从网上搜了下,有四种常用的解析xml的 ...

随机推荐

  1. day18(JDBC事务&连接池介绍&DBUtils工具介绍&BaseServlet作用)

    day18总结 今日思维导图: 今日内容 事务 连接池 ThreadLocal BaseServlet自定义Servlet父类(只要求会用,不要求会写) DBUtils à commons-dbuti ...

  2. 【Python】获取翻页之后的各页面中的属性值。

    如何获取翻页之后的页面中的html标签中的属性值? # coding=utf-8 from selenium import webdriver if __name__=="__main__& ...

  3. EdrawSoft Edraw Max 9.1安装破解

    1,安装软件[不要运行软件] 2,断网 3,打开Crack文件夹,复制”BaseCore.dll”,”ObjectModule.dll”到软件安装目录下替换原文件 默认的安装路径C:\Program ...

  4. python 的 import 使用规则

    对于含有 __init__.py 的目录(如adir),其实它就是一个package,它的子目录如果也包含 __init__.py,则只要将 adir 加入 sys.path,则它的字目录就不用加了, ...

  5. python 面向对象高级应用(三)

    目录: isinstance(obj,cls)和issubclass(sub,super) 反射 __setattr__,__delattr__,__getattr__ 二次加工标准类型(包装) __ ...

  6. python 利用爬虫获取页面上下拉框里的所有国家

    前段时间,领导说列一下某页面上的所有国家信息,话说这个国家下拉框里的国家有两三百个,是第三方模块导入的,手动从页面拷贝,不切实际,于是想着用爬虫去获取这个国家信息,并保存到文件里. 下面是具体的代码, ...

  7. The same month as the adidas NMD Singapore is releasing

    Earlier this December 2017, the inaugural adidas NMD Singapore silhouette released in the first colo ...

  8. CCPC-Wannafly Winter Camp Day2 (Div2, onsite)

    Class $A_i = a \cdot i \% n$ 有 $A_i = k \cdot gcd(a, n)$ 证明: $A_0 = 0, A_x = x \cdot a - y \cdot n$ ...

  9. jquery实现ajax跨域请求

    1.跨域问题: 是因为浏览器的同源策略是对ajax请求进行阻拦了,但是不是所有的请求都给做跨域,像是一般的href属性,a标签什么的都不拦截. 如: 项目一:p1.html <body> ...

  10. 前端学习笔记之CSS浮动浅析

    很早以前就接触过CSS,但对于浮动始终非常迷惑,可能是自身理解能力差,也可能是没能遇到一篇通俗的教程. 前些天小菜终于搞懂了浮动的基本原理,迫不及待的分享给大家. 写在前面的话: 由于CSS内容比较多 ...