Xml可扩展的标记语言
一、作用
- 可以用来保存数据
- 可以用来做配置文件
- 数据传输载体
二、文档声明
<?xml version="1.0" encoding="gbk" ?>version : 解析这个xml的时候,使用什么版本的解析器解析
encoding : 解析xml中的文字的时候,使用什么编码来翻译
standalone:是否独立
取值:
* yes:不依赖其他文件
* no:依赖其他文件
三、 XML 命名规则
XML 元素必须遵循以下命名规则:
名称可以含字母、数字以及其他的字符
名称不能以数字或者标点符号开始
名称不能以字符 “xml”(或者 XML、Xml)开始
名称不能包含空格
四、xml注释:
与html的注释一样
五、CDATA区----不让xml的解析器去解析的字段
* CDATA区:在该区域中的数据会被原样展示
* 格式: <![CDATA[ 数据 ]]>
六、XML解析
1、两种方式:DOM和SAX
2、解析API:jdom、dom4j
七、Dom4j基本用法
1、element.element(“stu”) : 返回该元素下的第一个stu元素
element.elements(); 返回该元素下的所有子元素。
2、 创建SaxReader对象
3、 指定解析的xml
4、获取根元素
5、根据根元素获取子元素或者下面的子孙元素
6、代码展示
try {
//1. 创建sax读取对象
SAXReader reader = new SAXReader(); //jdbc -- classloader
//2. 指定解析的xml源
Document document = reader.read(new File("src/xml/stus.xml"));
//3. 得到元素、
//得到根元素
Element rootElement= document.getRootElement();
//获取根元素下面的子元素 age
//rootElement.element("age")
//System.out.println(rootElement.element("s").element("a").getText());
//获取根元素下面的所有子元素 。 stu元素
List<Element> elements = rootElement.elements();
//遍历所有的stu元素
for (Element element : elements) {
//获取stu元素下面的name元素
String name = element.element("name").getText();
String age = element.element("age").getText();
String address = element.element("address").getText();
System.out.println("name="+name+"==age+"+age+"==address="+address);
}
} catch (Exception e) {
e.printStackTrace();
}
八、Xpath使用
1、定义
xpath其实是xml的路径语言,支持我们在解析xml的时候,能够快速的定位到具体的某一个元素。
2、jar包依赖‘—jaxen-1.1-beta-6.jar
九、xml约束
1、DTD
<!DOCTYPE stus [
<!ELEMENT stus (stu)>
<!ELEMENT stu (name,age)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
]>
* DTD:
* 引入dtd文档到xml文档中
* 内部dtd:将约束规则定义在xml文档中
* 外部dtd:将约束的规则定义在外部的dtd文件中
* 本地:<!DOCTYPE 根标签名 SYSTEM "dtd文件的位置">
* 网络:<!DOCTYPE 根标签名 PUBLIC "dtd文件名字" "dtd文件的位置URL">
2、Schema
十、总结
1、定义xml
2、解析xml