xml寒假不能大溜特溜,必须得狠狠地学
xml是可扩展的标记性语言。
xml的作用1、用来保存数据,而且这些数据具有自我描述性
2、它还可以做为项目或者模块的配置文件。
3、还可以做为网络传输数据的格式。
元素是指从开始标签到结束标签的内容。可以当标签理解。
例如下面的
xml元素命名规则书本1 我不好说 <br">> 上面的特殊字符用的很秒
● 名称可以含字母、数字以及其他的字符 (甚至中文都行头)
● 名称不能以数字或者标点符号开始
● 名称不能以字符“xml" (或者XML、Xml)开始
● 名称不能包含空格
根元素就是顶级元素,
没有父标签的元素,叫顶级元素。
根元素是没有父标签的顶级元素,而且是唯一个才行。下面我多了一个student元素 ,它直接给我报错。
格式
问题: 我想要<<<<<<<<<<< 但是不想一直写 <
CDATA语法可以告诉xml解析器,我CDATE里的文本内容,只是纯文本,不需要xml语法解析。
dom4j上面的特殊字符用的很秒
前面我们写xml文件,非常的开心,但我们需要用xml的内容该怎么办捏,这时候就需要xml解析技术。
配置我们广快(最近看红警08看多了)溜到他的官网
下载dom4j-1.6.1和 我特异损了一个和视频同步版本。
很快嗷,我们打开文件夹一看
然后我们溜一溜docs 看1看index 然后quick start 了解下
那么就让我们快速的来写一些东西来试试看把
现在,要这个将jar包添加到类路径
马上创建一个类来开溜,这时候肯定会有家人们会问了,这个SAX是什么东西,其实他是Simpel API for xml 基于事件驱动,读取一行解析一行,不能增删,只能查询。
我们通过创建一个SAXReader输入流去读取xml文件,会获得一个document对象。
document 对象 有一个重要的方法叫 getRootElement() 可以获取到根元素,拿到之后可以进行各种play掠
把标签对象转为标签字符串asXML()
获取子元素有两种方法element 和 elements()。
下图,我们拿到根元素对象后,很快嗷,elements()返回一个Elment的集合,就拿到了他的子元素集合,然后狠狠的滴遍历掠掠掠通过asXML(),输出来康康。
间接取法
获取子元素,使用getText()方法
你的智力会被侮辱,建议别看…
这时候,聪明的你,肯定会说,欸欸欸,怎么给来了一个空指针异常啊,我一看xml文件,嗷↑↓,原来是
我这第三本书啊,直接把name写成标签属性咯
直接取法
elementText()
甚至不会出现间接获取的那种错误,找不到就输出null,所以我强烈建议大家使用第二种方法
现在刚刚幸幸苦苦写的book类,来使用下
book类
package com.flzj.pojo;
import java.math.BigDecimal;
public class Book {
private String sn;
private String name;
private BigDecimal price;
private String author;
@Override
public String toString() {
return "Book{" +
"sn='" + sn + ''' +
", name='" + name + ''' +
", price=" + price +
", author='" + author + ''' +
'}';
}
public Book(String sn, String name, String author) {
this.sn = sn;
this.name = name;
this.author = author;
}
public String getSn() {
return sn;
}
public void setSn(String sn) {
this.sn = sn;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public BigDecimal getPrice() {
return price;
}
public void setPrice(BigDecimal price) {
this.price = price;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
}
xml代码
书本1 我不好说 <br">> 上面的特殊字符用的很秒
体验解释的java代码
package com.flzj.pojo;
import org.dom4j.document;
import org.dom4j.documentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;
import java.util.List;
public class Dom4jTest {
@Test
public void test1() throws Exception {
//创建一个SaxReader输入流,去读取xml配置文件,生成document对象
SAXReader saxReader = new SAXReader();
document document = saxReader.read("src/books.xml");
System.out.println(document);
}
@Test
public void test2() throws documentException {
//读取books.xml 文件
SAXReader saxReader = new SAXReader();
document document = saxReader.read("src/books.xml");
//通过document对象获取元素
Element rootElement = document.getRootElement();
//通过根元素获取book标签对象
//element()和elements()都是通过标签名查找子元素
List books = rootElement.elements("book");
//遍历开溜
for(Element book : books){
String sn = book.elementText("sn");
String name = book.elementText("name");
String author = book.elementText("author");
System.out.println(new Book(sn,name,author));
}
}
}


![[xml][dom4j][学习笔记]寒假javaweb学习之旅1.0 [xml][dom4j][学习笔记]寒假javaweb学习之旅1.0](http://www.mshxw.com/aiimages/31/708247.png)
