XML |
1、定义: XML 是可扩展的标记行语言
2、作用:
- 用来保存数据,且数据具有自我描述性
- 可作为项目或者模块的配置文件
- 可作为网络传输数据的格式(现在以JSON为主)
3、语法:
- 文档声明
例如:
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book sn="SN12341232">
<name>辟邪剑谱</name>
<price>9.9</price>
<author>班主任</author>
</book>
<book sn="SN12341231">
<name>葵花宝典</name>
<price>99.99</price>
<author>班长</author>
</book>
</books>
通过浏览器显示:
-
元素(标签):元素是指从开始标签到结束标签的内容
元素命名规则:① 可包含字母、数字以及其它字符
② 名称不能以数字或者标点符号开始
③ 名称不能包含空格 -
属性
属性必须使用引号引起来,不引会报错示例代码
4、语法规则
- 所有 XML 元素都须有关闭标签(也就是闭合)
-XML 标签对大小写敏感
- XML 必须正确地嵌套
- XML 文档必须有根元素(没有父标签),且根元素唯一
- XML 的属性值须加引号
- XML 中的特殊字符
- 文本区域(CDATA 区)
5、xml 解析技术:我们需要用到第三方的dom4j来解析
6、dom4j解析
- dom4j 编程步骤:
①先加载 xml 文件创建 Document 对象
②通过 Document 对象拿到根元素对象
③通过根元素.elelemts(标签名); 可以返回一个集合,这个集合里放着。所有你指定的标签名的元素对象
④找到你想要修改、删除的子元素,进行相应在的操作
⑤保存到硬盘上
public void test1() throws DocumentException {
//创建一个Saxreader输入流
SAXReader saxReader = new SAXReader();
//用于读取xml文件并返回一个document对象
Document doc=saxReader.read("src/books.xml");
//输出看看
System.out.println(doc);
}
- 遍历 标签 获取所有标签中的内容
①通过创建 SAXReader 对象。来读取 xml 文件,获取 Document 对象
②通过 Document 对象。拿到 XML 的根元素对象
③通过根元素对象。获取所有的 book 标签对象
④遍历每个 book 标签对象。然后获取到 book 标签对象内的每一个元素,再通过 getText() 方法拿到起始标签和结 束标签之间的文本内容
public void test2(){
// 1、读取books.xml文件
SAXReader reader = new SAXReader();
// 在junit测试中,相对路径是从模块名开始算
try {
Document document = reader.read("src/books.xml");
// 2 通过文档对象获得根元素
Element rootelement = document.getRootElement();
// System.out.println(rootelement);
// 3、通过根元素,获取book标签对象
// elements()和element()都是通过标签名查找子元素
List<Element> books = rootelement.elements("book");
// 4、处理每个标签转换称book类
for (Element book:books){
// asXML 把标签对象,转换为标签字符串
// System.out.println(book.asXML());
Element name = book.element("name");
// System.out.println(name.asXML());
// getText()可以获得标签中的文本内容
String nameText =name.getText();
//拿到book下的price,其余同理
String price = book.elementText("price");
String sn = book.attributeValue("sn");
String author = book.elementText("author");
System.out.println(sn+nameText+price+author);
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
打印内容: