xml增强学习笔记

2 Dom4j修改xml文档

              2.1 写出内容到xml文档

                                    XMLWriter writer = new XMLWriter(OutputStream, OutputForamt)

                                    wirter.write(Document);

              2.2 修改xml文档的API

                           增加:

                                             DocumentHelper.createDocument()  增加文档

                                             addElement("名称")  增加标签

                                             addAttribute("名称",“值”)  增加属性

                           修改:

                                             Attribute.setValue("值")  修改属性值

                                             Element.addAtribute("同名的属性名","值")  修改同名的属性值

                                             Element.setText("内容")  修改文本内容

                           删除

                                             Element.detach();  删除标签 

                                             Attribute.detach();  删除属性

3 xPath技术 

                     3.1 引入

                           问题:当使用dom4j查询比较深的层次结构的节点(标签,属性,文本),比较麻烦!!!

                     3.2 xPath作用

                                    主要是用于快速获取所需的节点对象。

                     3.3 在dom4j中如何使用xPath技术

                                    1)导入xPath支持jar包 。  jaxen-1.1-beta-6.jar

                                    2)使用xpath方法

                                                      List<Node>  selectNodes("xpath表达式");   查询多个节点对象

                                                      Node       selectSingleNode("xpath表达式");  查询一个节点对象

                                   

                     3.4 xPath语法

                                    /      绝对路径      表示从xml的根位置开始或子元素(一个层次结构)

                                    //     相对路径       表示不分任何层次结构的选择元素。

                                    *      通配符         表示匹配所有元素

                                    []      条件           表示选择什么条件下的元素

                                    @     属性            表示选择属性节点

                                    and     关系          表示条件的与关系(等价于&&)

                                    text()    文本           表示选择文本内容

                3.5 案例

                                    用户登录功能:

                                             用户输入用户名和密码 -> 到“数据库”查询是否有对应的用户 ->

                                                      有: 则表示登录成功

                                                      没有: 则表示登录失败

                                    用xml当做数据库

                                                      user.xml   用来存储用户的数据

4 SAX解析

                     4.1回顾DOM解析

                                    DOM解析原理:一次性把xml文档加载进内存,然后在内存中构建Document树。

                                                                        对内存要求比较要。    

                                                      缺点: 不适合读取大容量的xml文件,容易导致内存溢出。

                                            

                                    SAX解析原理: 加载一点,读取一点,处理一点。对内存要求比较低。

                     4.2 SAX解析工具  

                                             SAX解析工具-  Sun公司提供的。内置在jdk中。org.xml.sax.*

                                             核心的API:

                                                         SAXParser类: 用于读取和解析xml文件对象

                                                                        parse(File f, DefaultHandler dh)方法: 解析xml文件

                                   

                                                      参数一: File:表示 读取的xml文件。

                                                 参数二: DefaultHandler: SAX事件处理程序。使用DefaultHandler的子类

例如:{

                  1.创建SAXParser对象 

              SAXParser parser=SAXParserFactory.newInstance().newSAXParser();

                  2.调用parse方法

            parser.parse(new File("./src/contact.xml"), new MyDefaultHandler());

}              [一个类继承class 类名(extends DefaultHandler)  在调用是创建传进去

 

                                    DefaultHandler类的API:

                                                      void startDocument()  :  在读到文档开始时调用

                                                      void endDocument()  :在读到文档结束时调用

                                                      void startElement(String uri, String localName, String qName, Attributes attributes)  :读到开始标签时调用                                    

                                                      void endElement(String uri, String localName, String qName)   :读到结束标签时调用

                                                      void characters(char[] ch, int start, int length)  : 读到文本内容时调用

                                   

                                             ============DOM解析    vs   SAX解析             ========

        

DOM解析

SAX解析

原理: 一次性加载xml文档,不适合大容量的文件读取

原理: 加载一点,读取一点,处理一点。适合大容量文件的读取

DOM解析可以任意进行增删改成

SAX解析只能读取

DOM解析任意读取任何位置的数据,甚至往回读

SAX解析只能从上往下,按顺序读取,不能往回读

DOM解析面向对象的编程方法(Node,Element,Attribute),Java开发者编码比较简单。

SAX解析基于事件的编程方法。java开发编码相对复杂。

                  总结:

                                    1)Dom4j修改xml文档

                                              new XMLWrier();

                                                      ......

                                    2)xPath技术: 快速查询xml节点

                                                      selectNodes()

                                                      selectSinglNode();

                                             xpath表达式语言          

                                    3)  SAX解析

                                                      SAXParser parse

                                                               parser()

                                             DefaultHandler类:

                                                               startElement();

                                                               characters();

                                                               endElement();

作业:

                          

                  设计一个通讯录程序

                                    联系人: 编号  姓名  性别  年龄  电话  QQ 邮箱

                                    功能要求:

                                             添加联系人

                                             修改联系人

                                             删除联系人

                                             查询所有联系人

                                   

                           要求:

                           1)交互使用console(控制台)

                           2)数据存储到xml文件(作为“数据库”)(使用dom4j)

         提示:

                           启动程序

                                             ================

                                             【1】添加联系人

                                             【2】修改联系人

                                             【3】删除联系人

                                             【4】查询所有联系人

                                             【Q】退出程序

                                             ==================

                           输入 1:

                                             请输入编号:

                                             请输入姓名:

                                             请输入年龄

                                       。。。。

                                             添加成功!  -> 数据保存在xml中

                          输入2

                                             。。。。。。

                           输入4

                                             编号  姓名   年龄  。。。。

                                             001   张三  30

                                             002   李四 20 。。。

                                             。。。。。

原文地址:https://www.cnblogs.com/jesonjason/p/5221172.html