了解、解析、检索XML
目录
XML
XML概述
XML是可扩展标记语言(eXtensible Markup Language)的缩写,它是是一种数据表示格式,可以描述非常复杂的数据结构,常用于传输和存储数据。文件后缀:.xml
XML的几个特点和使用场景
- 一是纯文本,默认使用UTF-8编码;
- 二是可嵌套; 如果把XML内容存为文件,那么它就是一个XML文件。
- XML的使用场景:XML内容经常被当成消息进行网络传输,或者作为配置文件用于存储系统的信息。
- 用于进行存储数据和传输数据、作为软件的配置文件
XML的创建、语法规则
XML的创建
创建一个XML类型的文件,要求文件的后缀必须使用xml,如hello.xml
XML的语法规则
文档声明必须是第一行:<?xml version="1.0" encoding="UTF-8" ?>
- version:XML默认的版本号码、该属性是必须存在的
- encoding:本XML文件的编码
XML的标签(元素)规则
- 标签由一对尖括号和合法标识符组成: <name></name>,必须存在一个根标签,有且只能有一个。
- 标签必须成对出现,有开始,有结束: <name></name>
- 特殊的标签可以不成对,但是必须有结束标记,如:<br/>
- 标签中可以定义属性,属性和标签名空格隔开,属性值必须用引号引起来<student id = “1”></name>
- 标签需要正确的嵌套
XML的其他组成
- 定义注释信息:<!– 注释内容 -->
- 特殊字符
- < < 小于
- > > 大于
- & & 和号
- ' ' 单引号
- " " 引号
- 存在CDATA区: <![CDATA[ …内容… ]]> :可以写任何内容
XML文档约束方式一-DTD约束
问题:由于XML文件可以自定义标签,导致XML文件可以随意定义,程序在解析的时候可能出现问题。
文档约束:是用来限定xml文件中的标签以及属性应该怎么写。以此强制约束程序员必须按照文档约束的规定来编写xml文件
- 编写DTD约束文档,后缀必须是.dtd
- 在需要编写的XML文件中导入该DTD约束文档
- 按照约束的规定编写XML文件的内容。
- 可以约束XML文件的编写。
- 不能约束具体的数据类型。
XML文档约束方式二-schema约束
可以约束XML文件的标签内容格式,以及具体的数据类型;本身也是xml文件,格式更严谨。
- 写schema约束文档,后缀必须是.xsd,具体的形式到代码中观看。
- 在需要编写的XML文件中导入该schema约束文档
- 按照约束内容编写XML文件的标签。
XML解析技术
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解析更加方便 |
- Document对象:整个xml文档
- Element对象:标签
- Attribute对象:属性
- Text对象:文本内容
Dom4J解析XML文件 Dom4J
得到文档对象Document,从中获取元素对象和内容。
SAXReader类
构造器/方法 |
说明 |
public SAXReader() |
创建Dom4J的解析器对象 |
Document read(String url) |
加载XML文件成为Document对象 |
Document类
方法名 |
说明 |
Element getRootElement() |
获得根元素对象 |
Dom4j解析XML的元素、属性、文本
方法名 |
说明 |
List<Element> elements() |
得到当前元素下所有子元素 |
List<Element> elements(String name) |
得到当前元素下指定名字的子元素返回集合 |
Element element(String name) |
得到当前元素下指定名字的子元素,如果有很多名字相同的返回第一个 |
String getName() |
得到元素名字 |
String attributeValue(String name) |
通过属性名直接得到属性值 |
String elementText(子元素名) |
得到指定名称的子元素的文本 |
String getText() |
得到文本 |
XML检索技术:Xpath
- Dom4j需要进行文件的全部解析,然后再寻找数据。
- Xpath技术更加适合做信息检索。Xpath技术依赖Dom4j技术
XPath在解析XML文档方面提供了一独树一帜的路径思想,更加优雅,高效 XPath使用路径表达式来定位XML文档中的元素节点或属性节点。
- /元素/子元素/孙元素/孙孙元素
Xpath作用:
- 检索XML文件中的信息 绝对路径: /根元素/子元素/孙元素
方法名 |
说明 |
/根元素/子元素/孙元素 |
从根元素开始,一级一级向下查找,不能跨级 |
- 相对路径:./子元素/孙元素
方法名 |
说明 |
./子元素/孙元素 |
从当前元素开始,一级一级向下查找,不能跨级 |
- 全文检索://contact
方法名 |
说明 |
//contact |
找contact元素,无论元素在哪里 |
//contact/name |
找contact,无论在哪一级,但name一定是contact的子节点 |
//contact//name |
contact无论在哪一种,name只要是contact的子孙元素都可以找到 |
- 属性查找://@属性名 、//元素[@属性名]、//元素//[@属性名=‘值’]
方法名 |
说明 |
//@属性名 |
查找属性对象,无论是哪个元素,只要有这个属性即可。 |
//元素[@属性名] |
查找元素对象,全文搜索指定元素名和属性名。 |
//元素//[@属性名=‘值’] |
查找元素对象,全文搜索指定元素名和属性名,并且属性值相等。 |
- 点赞
- 收藏
- 关注作者
评论(0)