xml
1.概述
什么是xml?
xml是可扩展的标记性语言,XML 被设计用来传输和存储数据。
xml的作用:
- 用来保存数据,而且这些数据具有自我描述性
- 他还可以作为项目或者模块的配置文件
- 还可以作为网络传输数据的格式
2.xml语法
- 文档声明
- 元素(标签)
- xml属性
- xml注释
- 文本区域(CDATA区)
2.1 文档声明
<?xml version="1.0" encoding="UTF-8"?>
<!--xml文件的声明
version="1.0":xml的版本
encoding="UTF-8":xml本身的编码
-->
2.2 xml元素
xml元素是指从(且包括)结束标签的部分。
元素可以包含其他元素、文本或者两者的混合物。元素也可以拥有属性。
<books><!--books表示多个图书信息-->
<book sn="SN1234567890"><!--book表示图书信息-->
<name>JavaWeb</name>
<author>郭克华</author>
<price>49</price>
</book>
<book sn="SN0987654321"><!--book表示图书信息-->
<name>操作系统</name>
<author>佚名</author>
<price>20</price>
</book>
</books>
命名规则
- 名称可以包含字母、数字、以及其他的字符
- 名称不能以数字或标点符号开始
- 名称不能以字符“xml”(或者XML、Xml)开始
- 名称不能包含空格
- 可以使用任何名称,没有保留的字词
2.3 xml属性
xml的标签属性和html的标签属性是非常类似的,属性可以提供元素的额外信息
在标签上可以书写属性:
- 一个标签上可以书写多个属性。每个属性的值必须使用 引号 引起来
- 命名规则和标签的一致
- xml对大小写敏感
2.4 特殊字符&文本区域
-
特殊字符比如<,>要用<,>代替
-
文本区域(CDATA区)
CDATA语法可以告诉xml解析器,只是文本内容,不需要解析
<![CDATA[ 此处的文本不会被解析 ]]>
3.xml解析
所有现代浏览器都内建了供读取和操作 XML 的 XML 解析器。
解析器把 XML 转换为 XML DOM 对象 - 可通过 JavaScript 操作的对象。
dom4j 解析技术
编程步骤:
- 先加载xml文件创建Document对象
- 通过Document对象拿到根元素对象
- 通过根元素.elemets(标签名);可以返回一个集合,集合保存指定的标签名的元素对象
- 找到你想要修改。删除的子元素进行相应的操作
- 保存到硬盘上
public class Dom4jTest {
@Test
public void test1() throws DocumentException {
//创建一个SaxReadeer输入流,去读取xml配置文件,生成Document对象
SAXReader reader = new SAXReader();
Document document = reader.read("src/books.xml");
System.out.println(document);
Element book = document.elementByID("book");
System.out.println(book);
}
/**
* 读取books.xml文件生成Book类
*/
@Test
public void test2() throws DocumentException {
//1.读取books.xml文件
SAXReader reader = new SAXReader();
Document document = reader.read("src/books.xml");
//2.通过Document对象获取根元素
Element element = document.getRootElement();
// System.out.println(element);
//3.通过根元素获取book标签对象
//element()和elements()都是通过标签名查找子元素
List<Element> books = element.elements("book");
//4.遍历,处理每个book标签转换为Book类
for (Element book:
books) {
//asXML():把标签对象,转换为标签字符串
// System.out.println(book.asXML());
// System.out.println(book.element("name").asXML());
System.out.println(book.element("name").getText());
// JavaWeb
// 操作系统
//属性的获取
System.out.println(book.attributeValue("sn"));
}
}
}