xml
什么是xml?
- 可扩展标记语言,简称XML。是一种用于标记电子文件使其具有结构性的标记语言。
- 它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。
xml的作用
- 存储数据
- 传输数据
通过案例来学习xml
- 写一个xml文件,用来储存家庭的人口信息(姓名,年龄等)。
<?xml version="1.0" encoding="UTF-8" ?>
<families>
<family>
<person>
<name>父亲</name>
<age>36</age>
</person>
<person>
<name>母亲</name>
<age>35</age>
</person>
</family>
<family>
<person>
<name>父亲</name>
<age>36</age>
</person>
<person>
<name>母亲</name>
<age>35</age>
</person>
</family>
</families>
xml文档总结
1.必须要有一个跟标签
2.任意标签之间只能是包含关系或并列关系,合理的嵌套
3.除了标签体,还可以有属性和文本。
4.xml中没有内置任何标签,没有内置任何属性。所以:标签和属性都是自定义的。
xml的解析
DOM(Document Object Model)解析:是基于 XML 文档树结构的解析,整颗树加载到内存中,耗内存,可多次获取。
SAX(Simple API for XML)解析:是基于事件流的解析。效率高,数据量小,仅一次获取 。
DOM4J解析:融合了Dom和Sax的优点,即能保证效率,同时也可多次获取。著名的开发框架Spring和Hibernate都使用了Dom4j的功能。
Dom4j的增删改查操作
所有的操作必先有步操作!
导包!
dom4j-1.6.1.jar
- 查询
@Test//获取xml中的数据
public void test1() throws DocumentException {
//1.获取sax解析器对象
SAXReader reader = new SAXReader();
//2.读取某个xml文件--返回一个文档对象,表示整个xml文档树
Document doc = reader.read("src/xml1/a.xml");
//3.获取跟标签
Element root = doc.getRootElement();
//4.逐级向下寻找标签
Element family1 = (Element) root.elements("family").get(0);
Element person1 = (Element)family1.elements("person").get(0);
Element age = person1.element("age");
System.out.println(age.getText());//获取标签的文本内容
}
- 增加
//一、构建文档树
//1.创建解析器
SAXReader reader = new SAXReader();
//2.返回xml对应的dom文档树
Document doc = reader.read("src/xml/china.xml");
//3.获取根标签
Element root = doc.getRootElement();
//4.给根标签加一个子标签
Element e1 = root.addElement("湖南");
Element e2 = e1.addElement("长沙");
e2.setText("5555");
//二、用新的文档树覆盖旧的文档树
//1.借助字节输出流
FileOutputStream f1 = new FileOutputStream("src/xml/china.xml");
//2.需要一个格式化美化对象
OutputFormat format = OutputFormat.createPrettyPrint();
//3.根据上面的2个对象,侯建一个xml输出流对象
XMLWriter writer = new XMLWriter(f1,format);
//4.将doc文档树 重新写入xml文件中
writer.write(doc);
//5.关闭流 -- 刷新缓冲区
writer.close();
删除、修改操作可以自己去尝试,我就不一一举例了。
留下个赞再走吧!