xml(2)

来源:互联网 发布:淘宝账号注销不了 编辑:程序博客网 时间:2024/05/22 14:53
    XML解析-DOM解析    1)DOM解析的原理:         xml解析引擎把一个xml文件一次性加载进内存,在内存中创建一颗document对象树。通过树上的对象获取或设置xml文件信息    2)基于dom解析原理工具            dom4j工具     3)dom4j使用方法            查:                    Document doc= new SAXReader().read("xml文件");                    标签:                        element("name")  查询第一个子标签                        elements("name")  查询指定名称的所有子标签                        elements()       查询所有子标签                    属性:                        attributeValue("name")  根据属性名获取属性值                        attribute("name")  根据属性名获取属性对象                                getName()  属性名   /  getValue()  属性值                   文本:                        getText()    获取当前标签的文本内容                        elementText("name")  获取子标签文本            增:                    文档: DocumentHelper.createDocumnt();                    标签:  addElement("name")                       属性:  addAttribute("name","value")            改:                    属性值: setValue("修改值")  /  addAttribute("同名属性","修改值")                    文本:  setText("文本")            删:                    标签、属性: detach()   /    getParent().remove(标签/属性)

XPath技术

    1.1 作用    作用: 快速地查询到xml文件中节点。    当xml文件中的标签层次结构很深,那么如何来快速地定位到所需的标签呢?这就用到了xpath技术!!    1.2 体验xpath技术        1)导入jaxen-1.1-beta-6.jar  dom4j的xpath插件包        2)在dom4j中使用xpath                  List<Node> list = selectNodes("xpath表达式")  查询多个节点                 Node node = selectSingleNode("xpath表达式")   查询一个节点    1.3 xpath表达式(重点)        /   绝对路径    斜杠在最前面,代表xml文件的根。斜杠在中间,表示子元素。        //  相对路径    选择后代元素(不分层次结构)        *   通配          选择所有元素        [ ]   条件        选择什么条件下的元素。例如 /AAA/BBB[1] 选择第一个BBB子元素        @   属性         选取属性        =    内容 (值)          and  逻辑与        text()              选取文本内容    1.4 案例        模拟登录效果:            用户输入用户名密码 -> 到“数据库”中是否存在用户名和密码的用户 -》            存在: 登录成功           不存在: 登录失败

SAX解析

    2.1 引入    xml解析方法:            dom解析:原理xml解析引擎一次性把整个xml文件加载进内存,在内存创建一颗document树。                问题:大文件的话,使用dom解析效率比较低,甚至会导致内存溢出。            编码方式: 面向对象编程方式        sax解析: 原理加载一点,读取一点,处理一点。优势:占用的内存比较小。            编程方式:基于事件编程方式。    2.2 SAX解析工具        sun公司官方的sax解析工具。  在jdk中包含sax解析工具的api。org.xml.sax.*;    2.3 SAX解析的开发步骤    2.4 SAX案例    ===============  DOM解析 vs  SAX解析=====================DOM解析   SAX解析







DOM解析SAX解析 原理一次性加载进内存,构造docuemnt数,内存占用比较大加载一点,读取一点,内存占用相对小 读取顺序可以读取XML文件任意位置信息,甚至往回读只能是从上往下依次读取,不能往回读 操作方式可以进行查询,也可以进行修改只能查询 编码方式面向对象编程方式,更加适合java开发者基于事件编程方式,相对java开发难理解

XML约束

    3.1 什么是约束?    xml语法: w3c组织对xml文件的编程规则规范。(w3c组织制定的)    xml约束: 由开发者指定的对xml文件内容规范。(开发者根据业务指定的)    3.2 约束分类    DTD约束:相对简单的,数据类型简单的        场景:hibernate  struts2    Schema约束:相对复杂,功能很强大,数据类型非常丰富。schema的出现时为了替代DTD的。    3.3 DTD约束    1)dtd的使用方法        内部的dtd        外部的dtd    2)语法        约束标签            <!ELEMENT 元素名称 类别> 或 <!ELEMENT 元素名称 (元素内容)>            类别:                     EMPTY:空标签                PCDATA:普通字符串(不能包含子标签)                ANY: 任意内容(可以包含子标签)            顺序问题:                (子元素名称 1,子元素名称 2,.....): 一定要依次出现1,2,...            数量问题:                子元素:  有且仅有1个                + :    1个或多个                * :  0个或多个                ? :    0个或1个        约束属性            <!ATTLIST 元素名称 属性名称 属性类型 默认值>            默认值                         #REQUIRED:必须                    #IMPLIED:不是必须的                #FIXED value : 固定的            属性类型:控制属性值                CDATA:普通字符串                (en1|en2...): 枚举中的一个值                ID: 唯一的值    3.4 schema约束        重点:名称空间    总结:        1)xml语法:            标签、属性、文档声明、处理指令        2)xml解析(运用)            Dom解析:原理???(面向对象)                2.1 dom解析的工具:dom4j工具                2.2 对xml文件增删改查 (方法)                2.3 xpath技术: 快速查询xml文件的节点(标签,属性,文本)            SAX解析:原理???(基于事件的)                2.1 DefaultHandler类                        startElement(): 开始标签                        characters():文本内容                        endElement(): 结束标签        3)xml约束(看懂)                dtd约束:简单                schema约束: 看得懂名称空间,如何找到scheme约束文件?                        语法查询w3c文档