一、XML解析方式有两类:
        一】DOM(文档对象模型)
            1)一次性将整个XML文件读到内存,形成一颗DOM树
        二】SAX(XML的简单API)[simple API for XML]
            1)SAX多次将XML文件的每部分读到内存

二、步骤:

  一】利用SAXReader类获取Document对象

  1. SAXReader saxReader = new SAXReader();
  2. Document document = saxReader.read(new File("src/com/suse/simpledom4j/car.xml"));

  二】通过Document获取元素和属性

    常用方法: 

  1. 得到子元素的List集合: List elements()
  2. 得到元素的名称: String getName()
  3. 得到指定子元素引用: Element element("子元素名称");
  4. 得到子元素封装的信息: String elementText("子元素名称");
  5. 得到元素的属性值: String attributeValue("属性名");
  6. 添加一个子元素: Element addElement("子元素名称");
  7. 设置元素封装的信息: void setText("封装的信息");
  8. 删除一个子元素: boolean remove(子元素引用);
  9. 将元素转换成字符串: String asXML();

   三】通过XMLWriter类将内存中的XML文件回写到硬盘上

    常用类及方法:

  1.     1OutputFormat对象:制定流的输出时在文档中的显示格式
  2. 常用方法:
  3. 返回一个优美的格式器对象:static OutputFormat createPrettyPrint();
  4. 2) XMLWriter流对象:用于将内存中的XML文件输出到硬盘上
  5. 构造方法:
  6. XMLWriter(输出流)
  7. 常用方法:
  8. 将内存中的XML写入到硬盘上:void writer(Document document);
  9. 关闭流:void close();

三、对XML文件进行增删改查

  code:

  1. private Document getDocument() throws Exception {
  2. SAXReader saxReader = new SAXReader();
  3. Document document = saxReader.read(new File("src/com/suse/simpledom4j/car.xml"));
  4. return document;
  5. }
  6.  
  7. @Test
  8. public void add() throws Exception {
  9. Document document = getDocument();
  10. Element element = document.getRootElement();
  11. Element carElement = (Element) element.elements().get(0);
  12. Element priceElement = carElement.addElement("价格");
  13. priceElement.setText("20万");
  14.  
  15. doc2XML(document);
  16. }
  17.  
  18. @Test
  19. public void delete() throws Exception {
  20. Document document = getDocument();
  21. Element element = document.getRootElement();
  22. List<Element> elmentList = element.elements();
  23.  
  24. Element carElement = elmentList.get(0);
  25. Element priceElement = carElement.element("价格");
  26.  
  27. carElement.remove(priceElement);
  28.  
  29. doc2XML(document);
  30. }
  31.  
  32. @Test
  33. public void update() throws Exception {
  34. Document document = getDocument();
  35. Element rootElement = document.getRootElement();
  36. Element carElement = (Element) rootElement.elements().get(0);
  37.  
  38. carElement.element("价格").setText("60万元");
  39.  
  40. doc2XML(document);
  41. }
  42.  
  43. @Test
  44. public void select() throws Exception {
  45. Document document = getDocument();
  46. Element rootElement = document.getRootElement();
  47.  
  48. Element carElement = (Element) rootElement.elements().get(0);
  49. String price = carElement.element("价格").getTextTrim();
  50. System.out.println("价格为:" + price);
  51. }
  52.  
  53. private void doc2XML(Document doc) throws Exception {
  54.  
  55. //得到一个格式优美的格式输出器
  56. OutputFormat outputFormat = OutputFormat.createPrettyPrint();
  57.  
  58. File file = new File("src/com/suse/simpledom4j/car.xml");
  59. XMLWriter xmlWriter = new XMLWriter(new FileOutputStream(file), outputFormat);
  60.  
  61. xmlWriter.write(doc);
  62. xmlWriter.close();
  63.  
  64. }

四、其它API

 一】 DocumentHelper对象:   

  1.           static Document createDocument();//创建一个Document对象
              static Element createElement("元素名");//创建一个元素,并返回此元素的子类【注:可以使用】
  2. static Document parseText("符合XML格式的字符串");//创建一个document对象并返回
            
                  

  二】在指定位置插入节点元素
              ----通过List集合的add(index,E)方法
          方法原型:
                void add(int index, E element);

  三】字符串与XML文件的转换

    1)字符串  --->    XML
                通过parseText方法
                eg:

  1.             String text = "<members> <member>sitinspring</member></members>";
  2. Document dDocument = DocumentHelper.parseText(text);

2)XML   --->        字符串
                通过asXML方法:Document、和Element对象都具有此方法
                eg:

  1. SAXReader reader = new SAXReader();
  2. Document document = reader.read(new File("input.xml"));
  3. Element rootElement = docuemnt.getRootElement();
  4. Element memberElement = root.element("member");
  5.  
  6. String str_doc = document.saXML();
  7. String str_rootEle = rootElement.asXML();
  8. String str_memberEle = memberElement.asXML();

XML解析之dom4j的更多相关文章

  1. Java XML解析工具 dom4j介绍及使用实例

    Java XML解析工具 dom4j介绍及使用实例 dom4j介绍 dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory ...

  2. 【Java】XML解析之DOM4J

    DOM4J介绍 dom4j是一个简单的开源库,用于处理XML. XPath和XSLT,它基于Java平台,使用Java的集合框架,全面集成了DOM,SAX和JAXP,使用需要引用dom4j.jar包 ...

  3. xml解析 使用dom4j操作xml

     使用dom4j操作xml 1 导入 dom4j,的jar包   2 指定要解析的XML文件 SAXReader sr=new SAXReader(); Document document= sr.r ...

  4. XML 解析之 dom4j 解析器

    dom4j 的使用需要导入 jar 包, 包括: dom4j-1.6.1 和 jaxen-1.1-beta 步骤: 在项目目录下,"Folder" 创建一个 lib 文件夹 复制 ...

  5. Java -- XML解析工具dom4j

    前言 XML现已成为一种通用的数据交流方式,它的平台无关性.语言无关性.系统无关性.给数据集成与交互带来了极大的方便,对于XML的解析有四种方式:DOM生成和解析XML文档,SAX生成和解析XML文件 ...

  6. XML解析技术-dom4j

  7. DOM综合案例、SAX解析、StAX解析、DOM4J解析

    今日大纲 1.DOM技术对xml的增删操作 2.使用DOM技术完成联系人管理 3.SAX和StAX解析 4.DOM4J解析 5.XPATH介绍 1.DOM的增删操作 1.1.DOM的增加操作 /* * ...

  8. 具体解释XML解析(一)—解析接口浅析

    在DRP项目中接触到了一个XML解析工具DOM4J,它作为解析工具的据说性能很优秀.可是刚刚接触解析工具不久,而且也没有使用过其它的解析工具.因此对于DOM4J的性能没有直接的感受(没有參照物).只是 ...

  9. Dom4j解析Xml文件,Dom4j创建Xml文件

    Dom4j解析Xml文件,Dom4j创建Xml文件 >>>>>>>>>>>>>>>>>>&g ...

随机推荐

  1. EA强大的画图工具---设计数据库表格

    http://blog.csdn.net/senior_lee/article/details/30272169?utm_source=tuicool 关于EA这个优秀的软件是从师哥哪里听来的,自己瞎 ...

  2. PHP中数组转换为XML格式

    最近公司要做一个API接口,输出格式要有JSON与XML格式, 在PHP中,输入JSON直接json_encode就可以,但输出XML没有提供函数,于是决定自己写一个. <?php /** * ...

  3. [原创]HTML5 web性能监控策略

    web性能重要指标--时长 通常在监控前端页面性能的时候,我们会需要获取到很多的时间戳,比如用户按下回车的时候开始计时,但这个时候,我们统计的js代码并没有加载过来,也无法读取到相关的信息.在HTML ...

  4. MYSQL存储过程和函数学习笔记

    学至Tarena金牌讲师,金色晨曦科技公司技术总监沙利穆课程笔记的综合. 1. 什么是存储过程和函数 将SQL语句放入一个集合里,然后直接调用存储过程和函数来执行已经定义好的SQL语句,通过存储过程和 ...

  5. Eclipse设置保存时自动给变量加final

    也是针对checkstyle的,在代码检查规范时,所有的变量必须是final.为了解决这个问题,通过以下的设置可以在eclipse保存时,自动给没有加final的变量加上final. Window-& ...

  6. Django之路由系统

    一.路由系统介绍 在django程序中,可以通过urls.py文件对所有的url进行任务的分配,根据路由规则的定义选择不同的业务处理函数进行处理 二.路由规则定义 1.路由规则代码如下,mysite/ ...

  7. Javascript:数组和字符串的相互转化

    中午吃饭的时候,和室友讨论前端的问题,然后一个有趣的问题被抛出来: javascript用什么方法可以把“hello world”位置反转输出,即输出:"dlrow olleh"? ...

  8. Windows下Hadoop的环境安装[转]

    1.下载并安装Cygwin,记得cygwin安装中要把SSH选择上,因为后面Hadoop会用到,不详述cygwin的安装过程.我是安装在D:\cygwin下 2.配置系统环境变量 在windows命令 ...

  9. ICE 介绍及实现

    .ICE是什么? ICE是ZEROC的开源通信协议产品,它的全称是:The Internet Communications Engine,翻译为中文是互联网通信引擎,是一个面向对象的中间件,使我们能够 ...

  10. java设计模式---原型模式

    原型模式(Prototype):用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 原型模式结构图 通俗来说:原型模式就是深拷贝和浅拷贝的实现. 浅拷贝 只实现了值拷贝,对于引用对象还是 ...