1. import java.io.File;
  2. import java.io.FileWriter;
  3. import java.io.IOException;
  4. import java.util.Iterator;
  5.  
  6. import org.dom4j.Attribute;
  7. import org.dom4j.Document;
  8. import org.dom4j.DocumentException;
  9. import org.dom4j.DocumentHelper;
  10. import org.dom4j.Element;
  11. import org.dom4j.io.SAXReader;
  12. import org.dom4j.io.XMLWriter;
  13.  
  14. /**
  15. *
  16. * dom4j生成与解析XML文档
  17. *
  18. */
  19. public classDom4jDemo {
  20.  
  21. /**
  22. * 利用dom4j进行xml文档的写入操作
  23. */
  24. public void createXml(File file) {
  25.  
  26. // XML 声明 <?xmlversion="1.0" encoding="UTF-8"?> 自动添加到 XML文档中
  27.  
  28. // 使用DocumentHelper类创建文档实例(生成 XML文档节点的 dom4jAPI工厂类)
  29. Document document =DocumentHelper.createDocument();
  30.  
  31. // 使用addElement()方法创建根元素employees(用于向 XML 文档中增加元素)
  32. Element root =document.addElement("employees");
  33.  
  34. // 在根元素中使用 addComment()方法添加注释"AnXML Note"
  35. root.addComment("An XMLNote");
  36.  
  37. // 在根元素中使用addProcessingInstruction()方法增加一个处理指令
  38. root.addProcessingInstruction("target","text");
  39.  
  40. // 在根元素中使用 addElement()方法增加employee元素。
  41. Element empElem =root.addElement("employee");
  42.  
  43. // 使用 addAttribute()方法向employee元素添加id和name属性
  44. empElem.addAttribute("id","0001");
  45. empElem.addAttribute("name","wanglp");
  46.  
  47. // 向employee元素中添加sex元素
  48. Element sexElem =empElem.addElement("sex");
  49. // 使用setText()方法设置sex元素的文本
  50. sexElem.setText("m");
  51.  
  52. // 在employee元素中增加age元素 并设置该元素的文本。
  53. Element ageElem =empElem.addElement("age");
  54. ageElem.setText("25");
  55.  
  56. // 在根元素中使用 addElement()方法增加employee元素。
  57. Element emp2Elem =root.addElement("employee");
  58.  
  59. // 使用 addAttribute()方法向employee元素添加id和name属性
  60. emp2Elem.addAttribute("id","0002");
  61. emp2Elem.addAttribute("name","fox");
  62.  
  63. // 向employee元素中添加sex元素
  64. Element sex2Elem =emp2Elem.addElement("sex");
  65. // 使用setText()方法设置sex元素的文本
  66. sex2Elem.setText("f");
  67.  
  68. // 在employee元素中增加age元素 并设置该元素的文本。
  69. Element age2Elem =emp2Elem.addElement("age");
  70. age2Elem.setText("24");
  71.  
  72. // 可以使用 addDocType()方法添加文档类型说明。
  73. //document.addDocType("employees", null,"file://E:/Dtds/dom4j.dtd");
  74. // 这样就向 XML 文档中增加文档类型说明:
  75. // <!DOCTYPE employees SYSTEM"file://E:/Dtds/dom4j.dtd">
  76. // 如果文档要使用文档类型定义(DTD)文档验证则必须有Doctype。
  77.  
  78. try {
  79. XMLWriter output = newXMLWriter(new FileWriter(file));
  80. output.write(document);
  81. output.close();
  82. } catch (IOException e) {
  83. System.out.println(e.getMessage());
  84. }
  85. }
  86.  
  87. /**
  88. * 利用dom4j进行xml文档的读取操作
  89. */
  90. public void parserXml(File file) {
  91.  
  92. Document document = null;
  93.  
  94. // 使用 SAXReader 解析 XML 文档catalog.xml:
  95. SAXReader saxReader = new SAXReader();
  96.  
  97. try {
  98. document = saxReader.read(file);
  99. } catch (DocumentException e) {
  100. e.printStackTrace();
  101. }
  102. // 将字符串转为XML
  103. // document = DocumentHelper.parseText(fileString);
  104.  
  105. // 获取根节点
  106. Element root =document.getRootElement();
  107. // 打印节点名称
  108. System.out.println("<" +root.getName() + ">");
  109.  
  110. // 获取根节点下的子节点遍历
  111. Iterator<?> iter =root.elementIterator("employee");
  112. // 遍历employee节点
  113. while (iter.hasNext()) {
  114. // 获取当前子节点
  115. Element empEle = (Element)iter.next();
  116. System.out.println("<"+ empEle.getName() + ">");
  117.  
  118. // 获取当前子节点的属性遍历
  119. Iterator<?> attrList = empEle.attributeIterator();
  120. while (attrList.hasNext()) {
  121. Attribute attr = (Attribute)attrList.next();
  122. System.out.println(attr.getName() + "=" + attr.getValue());
  123. }
  124.  
  125. // 遍历employee节点下所有子节点
  126. Iterator<?> eleIte =empEle.elementIterator();
  127. while (eleIte.hasNext()) {
  128. Element ele = (Element)eleIte.next();
  129. System.out.println("<" + ele.getName() + ">" +ele.getTextTrim());
  130. }
  131.  
  132. // 获取employee节点下的子节点sex值
  133. // String sex =empEle.elementTextTrim("sex");
  134. //System.out.println("sex:" + sex);
  135.  
  136. }
  137. System.out.println("</" +root.getName() + ">");
  138. }
  1. public static void main(String[] args) {
  2.  
  3. Dom4jDemo dom4j = new Dom4jDemo();
  4. File file = newFile("e:/dom4j.xml");
  5. // dom4j.createXml(file);
  6.  
  7. dom4j.parserXml(file);
  8.  
  9. }
  10. }

DOM4J生成、解析XML实例的更多相关文章

  1. python 解析XML python模块xml.dom解析xml实例代码

    分享下python中使用模块xml.dom解析xml文件的实例代码,学习下python解析xml文件的方法. 原文转自:http://www.jbxue.com/article/16587.html ...

  2. Python 解析XML实例(xml.sax)

    已知movies.xml <collection shelf="New Arrivals"> <movie title="Enemy Behind&qu ...

  3. java dom4j解析xml实例(2)

    java利用dom4j解析xml 需要的jar包: dom4j官方网站在 http://www.dom4j.org/ 下载dom4j-1.6.1.zip 解开后有两个包,仅操作XML文档的话把dom4 ...

  4. java dom4j解析xml实例

    java利用dom4j解析xml 需要的jar包: dom4j官方网站在 http://www.dom4j.org/ 下载dom4j-1.6.1.zip 解开后有两个包,仅操作XML文档的话把dom4 ...

  5. JDOM生成、解析XML实例

    import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import j ...

  6. java生成解析xml的另外两种方法Xstream

    Xstream生成和解析xm和JAXB生成和解析xml的方法. 一,Xstream Xstream非jdk自带的,需要到入Xstream-1.4.3.jar和xpp3_min-1.1.4.jar 1. ...

  7. DOM4J方式解析XML文件

    dom4j介绍 dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory dom4j是一个简单的开源库,用于处理XML. X ...

  8. 【Android】使用Pull生成/解析XML文件

    一.生成XML文件,即是将对象集合转为XML文件存储. 对象集合 –> XML(序列化) Android中使用android.util.Xml类对其进行了描述,提供相应的API. 步骤大致如下: ...

  9. dom4j递归解析XML字符串所有子节点

    /** * dom4j递归解析所有子节点 * * @param childElements * @param mapEle * @return */ public Map<String, Obj ...

随机推荐

  1. Java的递归、IO流

    .t1 { background-color: #ff8080; width: 1100px; height: 40px } 一.递归 [递归] 1. 在函数自身内部,调用函数本身的方式,称为递归. ...

  2. [Vijos 1143]三取方格数

    Description 设有N*N的方格图,我们将其中的某些方格填入正整数, 而其他的方格中放入0. 某人从图得左上角出发,可以向下走,也可以向右走,直到到达右下角. 在走过的路上,他取走了方格中的数 ...

  3. 幸运序列(lucky)

    [问题描述] Lsy喜欢幸运数字,众所周知,幸运数字就是数字位上只有4和7的数字. 但是本题的幸运序列和幸运数字完全没关系,就是一个非常非常普通的序列.哈哈,是不是感觉被耍了,没错,你就是被耍了. L ...

  4. [BZOJ]1143: [CTSC2008]祭祀river

    题目大意:给定一个n个点m条边的有向无环图,问最多选多少个点使得两两之间互不到达.(n<=100,m<=1000) 思路:题目所求即最长反链,最长反链=最小链覆盖,对每个点向自己能到的所有 ...

  5. VK Cup 2017 - Квалификация 2

    因为资格赛1已经通过了,资格赛2随便打打玩.这次题目比上次还简单,FallDream看了两眼觉得太水就不做了,我一个人闲着无聊只好默默做了 A. Новый пароль 题目大意:给出N和K,要求构 ...

  6. poj 2886 线段树+反素数

    Who Gets the Most Candies? Time Limit: 5000MS   Memory Limit: 131072K Total Submissions: 12744   Acc ...

  7. [BZOJ]1047 理想的正方形(HAOI2007)

    真·水题.小C本来是不想贴出来的,但是有一股来自东方的神秘力量催促小C发出来. Description 有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和 ...

  8. 【Git】Git工具常用命令

    GitHub使用指南 一.把本地代码上传到GitHub 0. 提前配置好上传地址 [git config --global user.name "username"] [git c ...

  9. 第一节mysql 安装

    1 安装之前的检查 先要检查Linux系统中是否已经安装了MySQL,输入命令尝试打开MySQL服务: 输入密码后,如果出现以下提示,则说明系统中已经安装有 MySQL: 如果提示是这样的,则说明系统 ...

  10. win10下python环境变量设置

    我用的是python_2.7.3.msi,从官网下载之后,一路按照默认进行安装. 安装之后配置环境变量的步骤如下: 1,点“我的电脑”,右键选“属性” 2,选择“高级系统设置”--->选“环境变 ...