目录
XML简介
XML语法
文档声明
<?xml version="1.0" encoding="UTF-8"?>
<!-- xml声明 version是版本的意思 encoding是编码,而且这个<?xml要连在一起写,否则会有报错-->
<?xml version="1.0" encoding="UTF-8"?>
<!-- xml 声明 version 是版本的意思 encoding 是编码 -->
<books> <!-- 这是 xml 注释 -->
<book id="SN123123413241"> <!-- book 标签描述一本图书 id 属性描述 的是图书 的编号 -->
<name>java 编程思想</name> <!-- name 标签描述 的是图书 的信息 -->
<author>华仔</author> <!-- author 单词是作者的意思 ,描述图书作者 -->
<price>9.9</price> <!-- price 单词是价格,描述的是图书 的价格 -->
</book>
<book id="SN12341235123"> <!-- book 标签描述一本图书 id 属性描述 的是图书 的编号 -->
<name>葵花宝典</name> <!-- name 标签描述 的是图书 的信息 -->
<author>班长</author> <!-- author 单词是作者的意思 ,描述图书作者 -->
<price>5.5</price><!-- price 单词是价格,描述的是图书 的价格 -->
</book>
</books>
xml注释
元素(标签)
html 标签:
格式:<标签名>封装的数据</标签名>
单标签: <标签名 /> <br /> 换行 <hr />水平线
双标签 <标签名>封装的数据</标签名>
标签名大小写不敏感
标签有属性,有基本属性和事件属性
标签要闭合(不闭合 ,html 中不报错。但我们要养成良好的书写习惯。闭合)
XML元素必须遵循以下命名规则:
2.1)标签名称可以含字母、数字以及其他的字符
xml属性
语法规则
4)XML文档必须有根元素 根元素就是顶级元素,没有父标签的元素,叫顶级元素。根元素是没有父标签的顶级元素,而且是唯一一个才行。
5) XML的属性值须加引号
6)XML中的特殊字符 同html <author><班长><author> 显示<班长>
7)文本区域(CDATA 区) CDATA 语法可以告诉 xml 解析器,我 CDATA 里的文本内容,只是纯文本,不需要 xml 语法解析
CDATA 格式:
<![CDATA[ 这里可以把你输入的字符原样显示,不会解析 xml ]]>
XML解析技术介绍
dom4j解析技术
1)docs 是文档目录(学习文档),通过docs下的index.html页面,进如quick start快速入门提示
2)lib目录是dom4j需要依赖的其他第三方的类库
3)src是dom4j的码源目录
dom4j编程步骤
第一步:先加载xml文件创建Document对象
第二步:通过Document对象拿到根元素对象
第三步:通过根元素.elelemts(标签名); 可以返回一个集合,这个集合里放着所有你指定的标签名的元素对象
第四步:找到你想要修改、删除的子元素,进行相应的操作
第五步:保存到硬盘上
需要解析的books.xml文件内容
<?xml version="1.0" encoding="utf-8" ?>
<books> <!-- 这是 xml 注释 -->
<book id="SN123123413241">
<name>java 编程思想</name>
<author>华仔</author>
<price>9.9</price>
</book>
<book id="SN12341235123">
<name>葵花宝典</name>
<author>班长</author>
<price>5.5</price>
</book>
</books>
解析获取Document对象的代码
@Test
public void getDocument() throws DocumentException {
// 要创建一个 Document 对象,需要我们先创建一个 SAXReader 对象
SAXReader reader = new SAXReader();
// 这个对象用于读取 xml 文件,然后返回一个 Document。
Document document = reader.read("src/books.xml");
// 打印到控制台,看看是否创建成功
System.out.println(document);
}
// 第一步,通过创建 SAXReader 对象。来读取 xml 文件,获取 Document 对象
SAXReader reader = new SAXReader();
Document document = reader.read("src/books.xml");
// 第二步,通过 Document 对象。拿到 XML 的根元素对象
Element root = document.getRootElement();
// 打印测试
// Element.asXML() 它将当前元素转换成为 String 对象
// System.out.println( root.asXML() );
// 第三步,通过根元素对象。获取所有的 book 标签对象
// Element.elements(标签名)它可以拿到当前元素下的指定的子元素的集合
List<Element> books = root.elements("book");
// 第四小,遍历每个 book 标签对象。然后获取到 book 标签对象内的每一个元素,
for (Element book : books) {
// 测试
// System.out.println(book.asXML());
// 拿到 book 下面的 name 元素对象
Element nameElement = book.element("name");
// 拿到 book 下面的 price 元素对象
Element priceElement = book.element("price");
// 拿到 book 下面的 author 元素对象
Element authorElement = book.element("author");
//拿到book标签的sn属性
String sn = book.attributeValue("sn");
// 再通过 getText() 方法拿到起始标签和结束标签之间的文本内容
System.out.println("书名" + nameElement.getText() + " , 价格:"
+ priceElement.getText() + ", 作者:" + authorElement.getText());
}
}
可以创建book类的对应的JavaBean,通过读取的book.xml内容常见book对象。
new Book(nameElement,priceElement,authorElement)