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文件中可以存在以下特殊字符
  • &lt ; < 小于
  • &gt ; > 大于
  • &amp ; & 和号
  • &apos ; ' 单引号
  • &quot ; " 引号
  • 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中最常用的设计模式之一,这种类型的设计模式属于创建型模式,它提供了一种获取对象的方式。
  • 工厂设计模式的作用:
  • 工厂的方法可以封装对象的创建细节,比如:为该对象进行加工和数据注入
  • 可以实现类与类之间的解耦操作(核心思想)

设计模式:装饰模式

  • 什么是装饰设计模式?
  • 创建一个新类,包装原始类,从而在新类中提升原来类的功能
  • 装饰设计模式的作用:
  • 作用:装饰模式指的是在不改变原类的基础上,动态地扩展一个类的功能