XML 简单入门
XML
XML是可扩展标记语言(Extensible Markup Language),他是一种数据表示格式,用于传输和存储数据。
XML内容经常被当作消息进行网络传输,或作为配置文件用于存储
是一种很像HTML的标记语言
XML标签没有预定义,需要自行定义标签
XML的创建
即创建一个XML类型的文件,后缀使用xml即可

XML语法规则
文档第一行必须是声明
<?xml version="1.0" encoding="UTF-8"?>
version:xml默认的版本号,必须存在
encoding:本XML文件的编码
XML的标签(元素)规则
标签由一对尖括号和合法标识符组成: <name></name>,必须存在一个根标签,有且只能有一个。
标签必须成对出现,有开始,有结束: <name></name>
特殊的标签可以不成对,但是必须有结束标记,如:<br/>
标签中可以定义属性,属性和标签名空格隔开,属性值必须用引号引起来<student id = “1”></name>
(注意:id标签内容唯一)
标签需要正确的嵌套
XML其他组成
XML文件中可以定义注释信息:<!– 注释内容 -->
XML文件中可以存在以下特殊字符:
< < 小于
> > 大于
& & 和号
' ' 单引号
" " 引号
XML文件中可以存在CDATA区:在其中可以直接使用特殊字符
<![CDATA[ …内容… ]]>
XML文档约束
DTD
编写DTD约束文档,后缀必须是.dtd
<!ELEMENT 书架 (书+)>
<!ELEMENT 书 (书名,作者,售价)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 售价 (#PCDATA)>
约束好了就只能按照约束来写XML文件
在需要编写的XML文件中导入该DTD约束文档
<!DOCTYPE 当前文件名 SYSTEM "约束文件.dtd">
按照约束的规定编写XML文件的内容。
优缺点:可以约束XML文件的编写,但是不能约束具体的数据类型。
schema
可以约束具体的数据类型,约束能力更强。
schema本身也是一个XML文件,本身也受其他约束文件约束。
使用步骤:
①:编写schema约束文档,后缀必须是.xsd,具体的形式到代码中观看。
②:在需要编写的XML文件中导入该schema约束文档
③:按照约束内容编写XML文件的标签。
优缺点:可以约束XML具体的数据类型
XML解析
使用程序读取XML中的数据
两种解析方式:SAX解析、DOM解析
DOM解析文档对象模型
对象模型分为:
Document对象:整个xml文档
Element对象:标签
Attribute对象:属性
Text对象:文本内容
这些都继承于Node对象
<?xml version="1.0" encoding="UTF-8" ?><students>
<!--第一个学生信息-->
<student id="1">
<name>张三</name>
<age>23</age>
</student>
<!--第二个学生信息-->
<student id="2">
<name>李四</name>
<age>24</age>
</student>
</students>

Dom解析常用技术框架:dom4j、JDOM等
Dom4J解析XML文件
具体步骤:
1、下载Dom4j框架,官网下载。
dom4j.github.io

2、在项目中创建一个文件夹:lib
3、将dom4j-2.1.1.jar文件复制到 lib 文件夹
4、在jar文件上点右键,选择 Add as Library -> 点击OK
5、在类中导包使用
SAXReader类:
public SAXReader() 创建Dom4J的解析器对象!
Document read(String url) 加载XML文件成为Document对象
Document类
Element getRootElement() 获得根元素对象

Dom4j解析XML的元素、属性、文本

XML检索技术:Xpath
XPath在解析XML文档方面提供了一独树一帜的路径思想,更加优雅,高效。
XPath使用路径表达式来定位XML文档中的元素节点或属性节点。
具体步骤:
1、导入jar包(dom4j和jaxen-1.1.2.jar),Xpath技术依赖Dom4j技术
2、通过dom4j的SAXReader获取Document对象
3、利用XPath提供的API,结合XPath的语法完成选取XML文档元素节点进行解析操作。
Document中与Xpath相关的API如下:
Node selectSingleNode("表达式") 获取符合表达式的唯一元素
List
四大检索方案
1.绝对路径:/根路径/子元素/子元素

2.相对路径:./子元素/子元素(./代表了当前元素)

3.全文搜索:
//元素 在全文找这个元素
//元素1/元素2 在全文找元素1下面的一级元素2
//元素1//元素2 在全文找元素1下面的全部元素2

4.属性查找
//@属性名 在全文检索属性对象
//元素[@属性名] 在全文检索包含该属性的元素对象
//元素//[@属性名=‘值’] 在全文检索包含该属性的元素且属性值为该值的元素对象


浙公网安备 33010602011771号