一、DOM4j中,获得Document对象的方式有三种:

[java]  view plain copy
  1. 1.读取XML文件,获得document对象
  2. SAXReader reader = new SAXReader();
  3. Document   document = reader.read(new File("csdn.xml"));
  4. 2.解析XML形式的文本,得到document对象.
  5. String text = "<csdn></csdn>";
  6. Document document = DocumentHelper.parseText(text);
  7. 3.主动创建document对象.
  8. Document document = DocumentHelper.createDocument();              //创建根节点
  9. Element root = document.addElement("csdn");
  10. 二、节点对象操作的方法
    [java]  view plain copy
    1. 1.获取文档的根节点.
    2. Element root = document.getRootElement();
    3. 2.取得某个节点的子节点.
    4. Element element=node.element(“四大名著");
    5. 3.取得节点的文字
    6. String text=node.getText();
    7. 4.取得某节点下所有名为“csdn”的子节点,并进行遍历.
    8. List nodes = rootElm.elements("csdn");
    9. for (Iterator it = nodes.iterator(); it.hasNext();) {
    10. Element elm = (Element) it.next();
    11. // do something
    12. }
    13. 5.对某节点下的所有子节点进行遍历.
    14. for(Iterator it=root.elementIterator();it.hasNext();){
    15. Element element = (Element) it.next();
    16. // do something
    17. }
    18. 6.在某节点下添加子节点
    19. Element elm = newElm.addElement("朝代");
    20. 7.设置节点文字.   elm.setText("明朝");
    21. 8.删除某节点.//childElement是待删除的节点,parentElement是其父节点  parentElement.remove(childElment);
    22. 9.添加一个CDATA节点. Element contentElm = infoElm.addElement("content"); contentElm.addCDATA(“cdata区域”);

    三、节点对象的属性方法操作

    [java]  view plain copy
    1. 1.取得某节点下的某属性     Element root=document.getRootElement();         //属性名name
    2. Attribute attribute=root.attribute("id");
    3. 2.取得属性的文字
    4. String text=attribute.getText();
    5. 3.删除某属性  Attribute attribute=root.attribute("size");  root.remove(attribute);
    6. 4.遍历某节点的所有属性
    7. Element root=document.getRootElement();
    8. for(Iterator it=root.attributeIterator();it.hasNext();){
    9. Attribute attribute = (Attribute) it.next();
    10. String text=attribute.getText();
    11. System.out.println(text);
    12. }
    13. 5.设置某节点的属性和文字.    newMemberElm.addAttribute("name", "sitinspring");
    14. 6.设置属性的文字    Attribute attribute=root.attribute("name");    attribute.setText("csdn");

    四、将文档写入XML文件

    [java]  view plain copy
    1. 1.文档中全为英文,不设置编码,直接写入的形式.
    2. XMLWriter writer = new XMLWriter(new  FileWriter("ot.xml"));
    3. writer.write(document);
    4. writer.close();
    5. 2.文档中含有中文,设置编码格式写入的形式.
    6. OutputFormat format = OutputFormat.createPrettyPrint();// 创建文件输出的时候,自动缩进的格式
    7. format.setEncoding("UTF-8");//设置编码
    8. XMLWriter writer = new XMLWriter(newFileWriter("output.xml"),format);
    9. writer.write(document);
    10. writer.close();

    五、字符串与XML的转换

    [java]  view plain copy
    1. 1.将字符串转化为XML
    2. String text = "<csdn> <java>Java班</java></csdn>";
    3. Document document = DocumentHelper.parseText(text);
    4. 2.将文档或节点的XML转化为字符串.
    5. SAXReader reader = new SAXReader();
    6. Document   document = reader.read(new File("csdn.xml"));
    7. Element root=document.getRootElement();
    8. String docXmlText=document.asXML();
    9. String rootXmlText=root.asXML();
    10. Element memberElm=root.element("csdn");
    11. String memberXmlText=memberElm.asX

    六、案例(解析sida.xml文件并对其进行curd的操作)

    1.sida.xml描述四大名著的操作,文件内容如下

    [html]  view plain copy
    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <四大名著>
    3. <西游记 id="x001">
    4. <作者>吴承恩1</作者>
    5. <作者>吴承恩2</作者>
    6. <朝代>明朝</朝代>
    7. </西游记>
    8. <红楼梦 id="x002">
    9. <作者>曹雪芹</作者>
    10. </红楼梦>
    11. </四大名著>

    2.解析类测试操作

    [java]  view plain copy
    1. package dom4j;
    2. import java.io.File;
    3. import java.io.FileOutputStream;
    4. import java.io.FileWriter;
    5. import java.io.OutputStreamWriter;
    6. import java.nio.charset.Charset;
    7. import java.nio.charset.CharsetEncoder;
    8. import java.util.Iterator;
    9. import java.util.List;
    10. import org.dom4j.Attribute;
    11. import org.dom4j.Document;
    12. import org.dom4j.Element;
    13. import org.dom4j.io.OutputFormat;
    14. import org.dom4j.io.SAXReader;
    15. import org.dom4j.io.XMLWriter;
    16. import org.junit.Test;
    17. public class Demo01 {
    18. @Test
    19. public void test() throws Exception {
    20. // 创建saxReader对象
    21. SAXReader reader = new SAXReader();
    22. // 通过read方法读取一个文件 转换成Document对象
    23. Document document = reader.read(new File("src/dom4j/sida.xml"));
    24. //获取根节点元素对象
    25. Element node = document.getRootElement();
    26. //遍历所有的元素节点
    27. listNodes(node);
    28. // 获取四大名著元素节点中,子节点名称为红楼梦元素节点。
    29. Element element = node.element("红楼梦");
    30. //获取element的id属性节点对象
    31. Attribute attr = element.attribute("id");
    32. //删除属性
    33. element.remove(attr);
    34. //添加新的属性
    35. element.addAttribute("name", "作者");
    36. // 在红楼梦元素节点中添加朝代元素的节点
    37. Element newElement = element.addElement("朝代");
    38. newElement.setText("清朝");
    39. //获取element中的作者元素节点对象
    40. Element author = element.element("作者");
    41. //删除元素节点
    42. boolean flag = element.remove(author);
    43. //返回true代码删除成功,否则失败
    44. System.out.println(flag);
    45. //添加CDATA区域
    46. element.addCDATA("红楼梦,是一部爱情小说.");
    47. // 写入到一个新的文件中
    48. writer(document);
    49. }
    50. /**
    51. * 把document对象写入新的文件
    52. *
    53. * @param document
    54. * @throws Exception
    55. */
    56. public void writer(Document document) throws Exception {
    57. // 紧凑的格式
    58. // OutputFormat format = OutputFormat.createCompactFormat();
    59. // 排版缩进的格式
    60. OutputFormat format = OutputFormat.createPrettyPrint();
    61. // 设置编码
    62. format.setEncoding("UTF-8");
    63. // 创建XMLWriter对象,指定了写出文件及编码格式
    64. // XMLWriter writer = new XMLWriter(new FileWriter(new
    65. // File("src//a.xml")),format);
    66. XMLWriter writer = new XMLWriter(new OutputStreamWriter(
    67. new FileOutputStream(new File("src//a.xml")), "UTF-8"), format);
    68. // 写入
    69. writer.write(document);
    70. // 立即写入
    71. writer.flush();
    72. // 关闭操作
    73. writer.close();
    74. }
    75. /**
    76. * 遍历当前节点元素下面的所有(元素的)子节点
    77. *
    78. * @param node
    79. */
    80. public void listNodes(Element node) {
    81. System.out.println("当前节点的名称::" + node.getName());
    82. // 获取当前节点的所有属性节点
    83. List<Attribute> list = node.attributes();
    84. // 遍历属性节点
    85. for (Attribute attr : list) {
    86. System.out.println(attr.getText() + "-----" + attr.getName()
    87. + "---" + attr.getValue());
    88. }
    89. if (!(node.getTextTrim().equals(""))) {
    90. System.out.println("文本内容::::" + node.getText());
    91. }
    92. // 当前节点下面子节点迭代器
    93. Iterator<Element> it = node.elementIterator();
    94. // 遍历
    95. while (it.hasNext()) {
    96. // 获取某个子节点对象
    97. Element e = it.next();
    98. // 对子节点进行遍历
    99. listNodes(e);
    100. }
    101. }
    102. /**
    103. * 介绍Element中的element方法和elements方法的使用
    104. *
    105. * @param node
    106. */
    107. public void elementMethod(Element node) {
    108. // 获取node节点中,子节点的元素名称为西游记的元素节点。
    109. Element e = node.element("西游记");
    110. // 获取西游记元素节点中,子节点为作者的元素节点(可以看到只能获取第一个作者元素节点)
    111. Element author = e.element("作者");
    112. System.out.println(e.getName() + "----" + author.getText());
    113. // 获取西游记这个元素节点 中,所有子节点名称为作者元素的节点 。
    114. List<Element> authors = e.elements("作者");
    115. for (Element aut : authors) {
    116. System.out.println(aut.getText());
    117. }
    118. // 获取西游记这个元素节点 所有元素的子节点。
    119. List<Element> elements = e.elements();
    120. for (Element el : elements) {
    121. System.out.println(el.getText());
    122. }
    123. }
    124. }

    自己适当注释部分代码观察运行效果,反复练习,希望你对dom4j有进一步的了解.

    七、字符串与XML互转换案例

    [java]  view plain copy
    1. package dom4j;
    2. import java.io.File;
    3. import java.io.FileOutputStream;
    4. import java.io.OutputStreamWriter;
    5. import org.dom4j.Document;
    6. import org.dom4j.DocumentHelper;
    7. import org.dom4j.Element;
    8. import org.dom4j.io.OutputFormat;
    9. import org.dom4j.io.SAXReader;
    10. import org.dom4j.io.XMLWriter;
    11. import org.junit.Test;
    12. public class Demo02 {
    13. @Test
    14. public void test() throws Exception {
    15. // 创建saxreader对象
    16. SAXReader reader = new SAXReader();
    17. // 读取一个文件,把这个文件转换成Document对象
    18. Document document = reader.read(new File("src//c.xml"));
    19. // 获取根元素
    20. Element root = document.getRootElement();
    21. // 把文档转换字符串
    22. String docXmlText = document.asXML();
    23. System.out.println(docXmlText);
    24. System.out.println("---------------------------");
    25. // csdn元素标签根转换的内容
    26. String rootXmlText = root.asXML();
    27. System.out.println(rootXmlText);
    28. System.out.println("---------------------------");
    29. // 获取java元素标签 内的内容
    30. Element e = root.element("java");
    31. System.out.println(e.asXML());
    32. }
    33. /**
    34. * 创建一个document对象 往document对象中添加节点元素 转存为xml文件
    35. *
    36. * @throws Exception
    37. */
    38. public void test2() throws Exception {
    39. Document document = DocumentHelper.createDocument();// 创建根节点
    40. Element root = document.addElement("csdn");
    41. Element java = root.addElement("java");
    42. java.setText("java班");
    43. Element ios = root.addElement("ios");
    44. ios.setText("ios班");
    45. writer(document);
    46. }
    47. /**
    48. * 把一个文本字符串转换Document对象
    49. *
    50. * @throws Exception
    51. */
    52. public void test1() throws Exception {
    53. String text = "<csdn><java>Java班</java><net>Net班</net></csdn>";
    54. Document document = DocumentHelper.parseText(text);
    55. Element e = document.getRootElement();
    56. System.out.println(e.getName());
    57. writer(document);
    58. }
    59. /**
    60. * 把document对象写入新的文件
    61. *
    62. * @param document
    63. * @throws Exception
    64. */
    65. public void writer(Document document) throws Exception {
    66. // 紧凑的格式
    67. // OutputFormat format = OutputFormat.createCompactFormat();
    68. // 排版缩进的格式
    69. OutputFormat format = OutputFormat.createPrettyPrint();
    70. // 设置编码
    71. format.setEncoding("UTF-8");
    72. // 创建XMLWriter对象,指定了写出文件及编码格式
    73. // XMLWriter writer = new XMLWriter(new FileWriter(new
    74. // File("src//a.xml")),format);
    75. XMLWriter writer = new XMLWriter(new OutputStreamWriter(
    76. new FileOutputStream(new File("src//c.xml")), "UTF-8"), format);
    77. // 写入
    78. writer.write(document);
    79. // 立即写入
    80. writer.flush();
    81. // 关闭操作
    82. writer.close();
    83. }
    84. }

获得xml节点,节点属性,节点内容相关推荐

  1. HTMLDOM中三种元素节点、属性节点、文本节点的测试案例

    HTML dom中常用的三种节点分别是元素节点.属性节点.文本节点. 具体指的内容可参考下图: 以下为测试用例: <!DOCTYPE html> <html><head& ...

  2. document 获得元素节点,属性节点,文本节点

    document 获得元素节点,属性节点,文本节点. ※Element在w3c xml DOM中,HTML没有. (添加,修改,替换,删除,都在xml dom中) http://www.w3schoo ...

  3. DOM中元素节点、属性节点、文本节点的理解

    节点信息 每个节点都拥有包含着关于节点某些信息的属性.这些属性是: nodeName(节点名称) nodeValue(节点值) nodeType(节点类型) nodeType nodeType 属性可 ...

  4. document 获得元素节点,属性节点,文本节点。

    document 获得元素节点,属性节点,文本节点. ※Element在w3c xml DOM中,HTML没有. (添加,修改,替换,删除,都在xml dom中) http://www.w3schoo ...

  5. 深圳软件测试培训:DOM中元素节点、属性节点、文本节点的理解

    深圳软件测试培训:DOM中元素节点.属性节点.文本节点的理解 节点信息 每个节点都拥有包含着关于节点某些信息的属性.这些属性是: nodeType(节点类型) nodeName(节点名称) nodeV ...

  6. 认识DOM的三大节点:元素节点,文本节点,属性节点以及nodeName,nodeType,nodeValue的区别

    既然我们把网页文档看做树形结构,那么就有对应的节点.诚然DOM中有三大节点,分别是元素节点,文本节点,属性节点 元素节点:构成了DOM的基础.文档结构中,<html>是根元素,代表整个文档 ...

  7. 初探JavaScript(一)——也谈元素节点、属性节点、文本节点

    Javascript大行其道的时候,怎么能少了我来凑凑热闹^_^ 基本上自己对于js的知识储备很少,先前有用过JQuery实现一些简单功能,要论起JS的前世今生,来龙去脉,我就一小白.抱起一本< ...

  8. 元素节点,属性节点,文本节点,文档节点,分别的意思

    1.元素节点是HTML标签元素,元素节点主要提供了对元素标签名.子节点及属性的访问. 2.属性节点:一般是元素节点的属性,每一个 XML 属性算是一个属性节点. 3.文本节点:是DOM中用于呈现文本的 ...

  9. 元素节点、属性节点、文本节点 的节点属性

    1 .nodeName 元素节点        元素标记名/节点名称, 相当于tagName .属性节点       属性节点返回属性名, 文本节点          文本节点返回#text.node ...

  10. 修改节点的属性 节点默认不允许修改

    xml的节点默认是不允许修改的,本文也就不做处理了 XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(xmlPath); XmlElement e ...

最新文章

  1. lisp 中望cad 选项卡_这些高效插件,学CAD的基本用过两种以上
  2. 特斯拉完全自动驾驶可能再次涨价 涨至1.4万美元
  3. redis与memcached区别
  4. 三联图书馆系统管理服务器名,三联图书管理系统软件
  5. 《Head First 设计模式》(一):策略模式
  6. 知虾:2022 Shopee开店图文指南,手把手教你入驻
  7. NYOJ456andNYOJ325
  8. ssh框架的基本运用
  9. SpringMVC i18n国际化资源文件路径配置
  10. 国内外著名黑客杂志 《转》
  11. ColdFusion CGI or Application variables
  12. AddressBook iOS读取通讯录信息
  13. 静候 CSDN 佳音
  14. 京东大数据技术白皮书(附下载)
  15. [20190227]Windows系统评估工具winsat.txt
  16. 友价源码开发系统如何对接验证码功能?
  17. 图论(十三)——平面图和对偶图
  18. 华电软工非全研究生学习工作总结-研二开学总结
  19. 数据通信,数据通信原理是什么?
  20. mre应用和Native的交互之消息传递

热门文章

  1. 【嵌入式学习——知识点总结】几种排序算法
  2. php 时间到期,仅当当前时间到期时间(php mysqli)时列出作业
  3. Python面向对象的三大特性—封装,继承,多态
  4. JS实现苹果计算器(简易版)
  5. 【动态】万事达卡暗示计划开发区块链结算系统
  6. superset通过iframe嵌入网页,部分图表无法显示
  7. 关于邮箱发送信息的代码工具
  8. android3.0工具栏,Android中的工具栏(ActionBar和ToolBar)
  9. WPF学习总结和记录(六)-文本和墨水
  10. 计算机芯片有关的大学专业,在大学中与芯片技术有关的专业有哪些?