JavaWeb_XML篇
Posted 葡萄籽-June
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaWeb_XML篇相关的知识,希望对你有一定的参考价值。
XML篇
本文主要是介绍XML的基础内容,并通过XML举例深入理解。
文章目录
一、XML简介
Extensible Markup Language 可扩展的标记性语言
1.1 xml 的作用
1、用来保存数据,而且这些数据具有自我描述性
2、它还可以做为项目或者模块的配置文件
3、还可以做为网络传输数据的格式(现在主要使用JSON )
1.2 xml 语法
1.2.1. 文档声明
<?xml version="1.0" encoding="UTF-8"?>xml 声明
且这个 <?xml 要连在一起写,否则会有报错
属性 | 含义 |
---|---|
version | 版本号 |
encoding | xml 的文件编码 |
standalone=“yes/no” | xml 文件是否是独立的xml 文件 |
例如,创建一个简单XML 文件,用来描述图书信息。
<?xml version="1.0" encoding="UTF-8"?>
<!-- xml 声明version 是版本的意思encoding 是编码-->
<books> <!-- 这是xml 注释-->
<book id="SN1212121212"> <!-- book 标签描述一本图书id 属性描述的是图书的编号-->
<name>java 编程</name> <!-- name 标签描述的是图书的信息-->
<author>佚名</author> <!-- author 单词是作者的意思,描述图书作者-->
<price>39.9</price> <!-- price 单词是价格,描述的是图书的价格-->
</book>
<book id="SN2323232323"> <!-- book 标签描述一本图书id 属性描述的是图书的编号-->
<name>哈利波特</name> <!-- name 标签描述的是图书的信息-->
<author>罗琳</author> <!-- author 单词是作者的意思,描述图书作者-->
<price>79.9</price> <!-- price 单词是价格,描述的是图书的价格-->
</book>
</books>
【注】xml文件可直接在浏览器查看
1.2.2. 元素(标签)
xml元素指的是从(且包括)开始标签直到结束标签的部分。 元素可包含其他元素、文本或者两者的混合物;(也可以拥有属性)
就如上述图书信息的xml例子中:
book标签是一对的,并且可以包含name、author、price等属性。
<book id="SN1212121212"> <!-- book 标签描述一本图书id 属性描述的是图书的编号-->
<name>java 编程</name> <!-- name 标签描述的是图书的信息-->
<author>佚名</author> <!-- author 单词是作者的意思,描述图书作者-->
<price>39.9</price> <!-- price 单词是价格,描述的是图书的价格-->
</book>
XML的命名规则:
【1】名称可以含字母、数字以及其他的字符
【2】名称不能以数字或者标点符号开始
【3】名称不能包含空格
xml 中的元素(标签)也分成单标签和双标签:
单标签
— 格式: <标签名属性=”值” 属性=”值” … />
双标签
— 格式:< 标签名属性=”值” 属性=”值”…>文本数据或子标签</标签名>
1.2.3. xml 属性
xml 的标签属性和html 的标签属性是非常类似的,属性可以提供元素的额外信息 在标签上可以书写属性:
-【1】一个标签上可以书写多个属性。
-【2】每个属性的值必须使用引号引起来,不引会报错示例代码;
-【3】其规则和标签的书写规则一致。
1.2.4. xml 注释
html 和XML 注释一样: <!-- html 注释–>
1.2.5. 语法规则
【1】所有XML 元素都须有关闭标签(也就是闭合)
【2】XML 标签对大小写敏感
【3】XML 必须正确地嵌套
【4】XML 文档必须有根元素
【5】XML 的属性值须加引号
【6】XML 中有特殊字符:& lt; & gt; 等
【7】文本区域(CDATA 区)
---CDATA 语法可以告诉xml 解析器,我CDATA 里的文本内容,只是纯文本,不需要xml 语法解析
---CDATA 格式:
<![CDATA[ 这里可以把你输入的字符原样显示,不会解析xml ]]>
二、xml 解析技术介绍
xml 可扩展的标记语言。 不管是html 文件还是xml 文件它们都是标记型文档,都可以使用w3c 组织制定的dom 技术来解析。【1】XML文档对象模型定义访问和操作XML文档的标准方法。
【2】DOM将XML文档作为一个树形结构,而树叶被定义为节点。
【3】document 对象表示的是整个文档(可以是html 文档,也可以是xml 文档)
第三方解析:
(1)dom4j 又对jdom 进行了封装
(2)jdom 在dom 基础上进行了封装
(3)pull 主要用在android 手机开发,是在跟sax 非常类似都是事件机制解析xml 文件。
三、dom4j 解析技术
由于dom4j 它不是sun 公司的技术,而属于第三方公司的技术,使用dom4j 就需要到dom4j 官网下载dom4j的jar 包。
3.1 dom4j 编程步骤
【1】先加载xml 文件创建Document 对象
【2】通过Document 对象拿到根元素对象
【3】通过根元素.elelemts(标签名); 可以返回一个集合,这个集合里放着所有指定的标签名的元素对象
【4】找到你想要修改、删除的子元素,进行相应在的操作
【5】保存到硬盘上
3.2 获取document 对象
创建一个lib 目录,并添加dom4j 的jar 包。并添加到类路径。
例如解析上述例子books.xml 文件内容;
解析获取Document 对象的代码:
/*
* dom4j 获取Documet 对象
*/
@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);
3.3 遍历标签获取所有标签中的内容
【1】通过创建SAXReader 对象。来读取xml 文件,获取Document 对象
【2】通过Document 对象。拿到XML 的根元素对象
【3】通过根元素对象。获取所有的book 标签对象
【4】遍历每个book 标签对象。然后获取到book 标签对象内的每一个元素,再通过getText() 方法拿到起始标签和结束标签之间的文本内容
/*
* 读取xml 文件中的内容
*/
@Test
public void readXML() throws DocumentException
// 第一步,通过创建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");
// 再通过getText() 方法拿到起始标签和结束标签之间的文本内容
System.out.println("书名:" + nameElement.getText() + " , 价格:"
+ priceElement.getText() + ", 作者:" + authorElement.getText());
结果:
书名:java 编程, 价格:39.9,作者:佚名
书名:哈利波特,价格:79.9,作者:罗琳
以上是关于JavaWeb_XML篇的主要内容,如果未能解决你的问题,请参考以下文章