XML、XML解析、设计模式等
XML
- XML概述
- XML是可扩展标记语言(eXtensible Markup Language)的缩写,它是一种数据表示格式,可以描述非常复杂的数据结构,常用于传输和存储数据
- XML的几个特点和使用场景
- 一、纯文本,默认使用UTF-8编码;二:可嵌套
- 如果把XML内容存为文件,那么他就是一个XML文件
- XML的使用场景:XML内容经常被当成消息进行网络传输,或者作为配置文件用于存储系统的信息
- XML的创建、语法规则
- XML的创建
- 就是创建一个XML类型的文件,要求文件的后缀必须使用xml,如hello_world.xml
- IDEA创建XML文件的操作步骤
- 右键src、点击new、再点击file、文件名加后缀 .xml
- XML的语法规则
- XML文件的后缀名为:xml
- 文档声明必须是第一行
- <?xml version="1.0" encoding="UTF-8"?>
- version:XML默认的版本号码、该属性是必须存在的
- encoding:本XML文件的编码
- XML的标签(元素)规则
- 标签由一对尖括号和合法标识符组成:<name></name>,必须存在一个根标签,有且只能有一个
- 标签必须成对出现,有开始,有结束:<name></name>
- 特殊的标签可以不成对,但是必须有结束标记,如:
- 标签中可以定义属性,属性和标签名空格隔开,属性值必须用引号引起来<student id = "1"></name>
- 标签需要正确的嵌套
- XML的其他组成
- XML文件中可以定义注释信息:<!-- 注释内容 -->
- XML文件中可以存在以下特殊字符
- < ; < 小于
- > ; > 大于
- & ; & 和号
- &apos ; ' 单引号
- " ; " 引号
- XML文件中可以存在CDATA区:<![CDATA[ …内容…]]>
- XML文档约束方式一:DTD约束【了解】
- 什么是文档约束?
- 文档约束:是用来限定xml文件中的标签以及属性应该怎么写。以此强制约束程序员必须按照文档约束的规定来编写xml文件
- DTD约束存在的问题
- 不能约束具体的数据类型
- XML文档约束方式二:schema约束【了解】
- schema可以约束具体的数据类型,约束能力上更强大
- schema本身也是一个xml,本身也受到其他约束文件的要求,所以编写的更加严谨
XML解析技术
- XML解析技术概述
- 就是使用程序读取XML中的数据
- 两种解析方式
- SAX解析
- DOM解析
- DOM常见的解析工具
名称 | 说明 |
JAXP | SUN公司提供的一套XML的解析的API |
JDOM | JDOM是一个开源项目,它基于树形结构,利用纯JAVA的技术对XML文档实现解析、生成、序列化以及多种操作 |
dom4j | 是JDOM的升级品,用来读写XML文件的。具有性能优异、功能强大和极其易使用的特点,它的性能超过sun公司官方的dom技术,同时它也是一个开放源代码的软件,Hibernate也用它来读写配置文件 |
jsoup | 功能强大DOM方式的XML解析开发包,尤其对HTML解析更加方便 |
- Decument对象:整个xml文档
- Node对象
- Element对象:标签
- Attribute对象:属性
- Text对象:文本内容
- Dom4J解析XML文件
- Dom4j解析XML-得到Document对象
- SAXReader类
构造器/方法 | 说明 |
public SAXReader() | 创建Dom4J的解析器对象 |
Document read(String url) | 加载XML文件成为Document对象 |
- Document类
方法名 | 说明 |
Element getRootRlement() | 获取根元素对象 |
- Dom4J解析XML文件中的各个节点
- Dom4j解析XML的元素、属性、文本
方法名 | 说明 |
List<Element> elements() | 得到当前元素下所有子元素 |
List<Element> elements(String name) | 得到当前元素下指定名字的子元素返回集合 |
Element element(String name) | 得到当前元素下指定名字的子元素,如果有很多名字相同的返回第一个 |
String getName() | 得到元素名字 |
String attributeValue(String name) | 通过属性名直接得到属性值 |
String elementText(子元素名) | 得到指定名称的子元素的文本 |
String getText() | 得到文本 |
- Dom4J解析XML文件-实战案例
- xml-app.src.com.itheima.d1_dom3j.Dom4JTest2
XML检索技术:Xpath
- XPath介绍
- XPath在解析XML文档方面提供了独树一帜得的路径思想,更加优雅,高效
- XPath使用路径表达式来定位XML文档中的元素节点或属性节点
- Document中与Xpath相关的API:
方法名 | 说明 |
Node selectSingleNode("表达式") | 获取符合表达式的唯一元素 |
List<Node> selectNode("表达式") | 获取符合表达式的元素集合 |
- Xpath的四大检索方案
- xml-app.src.com.itheima.d2_xpath.XPathDemo
- 绝对路径
- 采用绝对路径获取从根节点开始逐层的查找/contactList/contact/name节点列表打印信息
方法名 | 说明 |
/根元素/子元素/孙元素 | 从根元素开始,一级一级向下查找,不能跨级 |
- 相对路径
- 全部检索
- 属性查找
- 在全文中搜索属性,或者带属性的元素
方法名 | 说明 |
//@属性名 | 查找属性对象,无论是哪个元素,只要有这个属性即可 |
//元素[@属性名] | 查找元素对象,全文搜索指定元素名和属性名 |
//元素[@属性名=值] | 查找元素对象,全文搜索指定元素名和属性名,并且属性值相等 |
设计模式:工厂模式
- 什么是工厂设计模式?
- 之前我们创建类对象时,都是使用new对象的形式创建,在很多业务场景下也提供了不直接new的方式
- 工厂模式(Factory Pattern)是Java中最常用的设计模式之一,这种类型的设计模式属于创建型模式,它提供了一种获取对象的方式。
- 工厂设计模式的作用:
- 工厂的方法可以封装对象的创建细节,比如:为该对象进行加工和数据注入
- 可以实现类与类之间的解耦操作(核心思想)
设计模式:装饰模式
- 什么是装饰设计模式?
- 创建一个新类,包装原始类,从而在新类中提升原来类的功能
- 装饰设计模式的作用:
- 作用:装饰模式指的是在不改变原类的基础上,动态地扩展一个类的功能