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文档
阅读全文
0 0
- xml 2
- XML(2)
- xml(2)
- xml(2)
- XML-2
- xml/2
- XML--2
- XML(2)
- XMl 2
- XML (2)
- xml(2)
- XML(2)----XML的基本常识
- XML教程(2)--XML元素与XML属性值
- python3.2 读写 xml( xml.etree.ElementTree,xml.dom )
- [XML学习笔记][2]XML的使用
- XML入门(2)-XML文档规则
- XML入门指南(2)如何使用XML
- XML简明教程(2)什么是XML文档
- 期望dp小结
- oracle <>
- 程序循环
- Requests: 让 HTTP 服务人类
- [2017纪中10-30]Graph 最小生成树
- xml(2)
- MySQL周测题
- 页面布局 --- 格子布局
- Hive学习总结
- LightOJ1128 Greatest Parent
- 文章标题
- 【NOIP模拟】 (10.30) T2 游戏
- linux下使用百度云python客户端
- 使用Spring+Junit4.4进行测试