XML
什么是xml?
xml是可扩展的标记性语言
xml的作用
xml的主要作用有:
1.用来保存数据,而且这些数据具有自我描述性
2.它还可以作为项目或者模块的配置文件
3.还可以作为网络传输数据的格式
xml语法
xml命名规则
- 名称可以含字母、数字以及其他的字符
- 名称不能以数字或者标点符号开始
- 名称不能包含空格
1.文档声明
<?xml version="1.0" encoding="UTF-8"?>
2.元素(标签)
元素是指开始标签到结束标签的内容
<!--根标签-->
<students>
<!--子标签-->
<student id="1001">
<name>张三</name>
<age>25</age>
<address>镇江市</address>
</student>
<!--子标签-->
<student id="1002">
<name>李四</name>
<age>29</age>
<address>南京市</address>
</student>
<!--子标签-->
<student id="1003">
<name>王五</name>
<age>19</age>
<address>上海市</address>
</student>
</students>
3.xml属性
id属性为1003
<student id="1003">
4.xml注释
ctrl + shift + /
<!--此处写注释-->
xml解析技术
xml可扩展的标记语言,不管是html文件还是xml文件它们都是标记型文档,都可以使用w3c组织制定的dom技术来解析
document对象表示的是整个文档(可以是html文档,也可以是xml文档)
w3c是一个制定规范的组织,针对于xml,html都制定了相关的规范,元素都是以标签的形式体现的,每个标签都是一个对象,而且每个标签都是有层级关系的,w3c通过一种树形图来管理这种关系,而且提供了一个文本对象dom对象,通过这个dom对象可以去获取所有的标签对象
dom解析技术
dom解析技术是W3C组织制定的,而所有的编程语言都对这个解析技术使用了自己语言的特点进行实现,Java对dom技术解析标记也做了实现
sun公司在JDK5版本对dom解析技术进行升级:SAX(Simple API for XML) SAX解析,它跟W3C制定的解析不太一样,它是以类似事件机制通过回调告诉用户当前正在解析的内容,它是一行一行的读取xml文件进行解析的,不会创建大量的dom对象,所以它在解析xml的时候,在内存的使用上,和性能上,都优于Dom解析。
jdom在dom基础上进行了封装
dom4j又对jdom进行了封装
pull主要用在Android手机开发,实在跟sax非常类似都是事件机制解析xml文件
Dom4j
- Dom4j是第三方的解析技术,我们需要使用第三方给我们提供好的类库才可以解析xml文件
- 由于dom4j它不是sun公司的技术,而属于第三方公司的技术,需要使用dom4j就需要到dom4j官网下载dom4j的jar包
dom4j编程步骤
1.先加载xml文件创建Document对象
2.通过Document对象拿到根元素对象 getRootElement()
3.通过根元素.elements(标签名)
;可以返回一个集合,这个集合里放着。所有你指定的标签名的元素对象
4.找到你想要修改、删除的子元素,进行相应的操作
5.保存到硬盘上
将xml文件内容解析封装为java对象
package com.os467.xml;
import com.os467.beans.Student;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.util.ArrayList;
import java.util.List;
public class Dom4jTest {
public static void main(String[] args) {
try {
//创建流对象
SAXReader saxReader = new SAXReader();
//通过流对象读取xml文件,然后返回document对象
Document document = saxReader.read("src/xml/test.xml");
//通过document获取到根标签
Element rootElement = document.getRootElement();
//获取根标签中所有的子标签对象
List<Element> elements = rootElement.elements("student");
//创建集合对象
List<Student> studentList = new ArrayList<>();
//遍历集合
for (Element element : elements) {
//获取子标签中的数据
String name = element.elementText("name");
String age = element.elementText("age");
String address = element.elementText("address");
//将这些数据封装成java对象
Student student = new Student(name, Integer.parseInt(age), address);
//将这些对象添加到集合中
studentList.add(student);
}
for (Student student : studentList) {
System.out.println(student);
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以邮件至 1300452403@qq.com