XML简介
什么是xml?
xml是可扩展的标记性语言
xml的作用
xml的主要作用:
- 用来保存数据,而且这些数据具有自我描述性.
- 它还可以作为项目或者模板的配置文件
- 还可以作为网络传输数据的格式(现在已JSON为主).
xml语法
- 文档声明
- 元素(标签) 什么是xml元素?
xml元素指的是从(且包括)开始标签直到(且包括)结束标签的部分.
元素可包含其他元素,文本或者两者的混合物.元素也可以拥有属性.
例如:java 编程思想
元素 我们可以简单的理解为是标签 Element翻译 元素 - xml属性
- xml注释
- 语法规则: xml 文档必须有根元素
根元素就是顶级元素 没有父级标签的元素叫做顶级元素.
根元素是没有父标签的顶级元素,而且是唯一才行
xml解析技术介绍
xml是可扩展的标记性语言
不管是html文件还是xml文件他们都是标记性文档.都可以使用w3c组织指定的dom技术来解析.
document对象表现的是整个文档(可以是Html文档,也可以是Xml文档)
dom4j解析技术(*********)
dom4j它是第三方的解析技术.我们需要使用第三方给我们提供好的类库才可以解析xml文件
Book类代码
package books.com.no7;
import java.math.BigDecimal;
public class Book {
private String sn;
private String name;
private Double price;
private String author;
public Book() {
}
public Book(String sn, String name, double price, String author) {
this.sn = sn;
this.name = name;
this.price = price;
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 Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
@Override
public String toString() {
return "Book{" +
"sn='" + sn + '\'' +
", name='" + name + '\'' +
", price=" + price +
", author='" + author + '\'' +
'}';
}
}
Dom4jTest代码
package books.com.no7;
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 test01() throws DocumentException {
//创建一个SaxReader输入流,去读取xml配置文件,生成Document对象
SAXReader saxReader = new SAXReader();
Document document = saxReader.read("src/books/books.xml");
System.out.println(document);
}
/**
* 读取books.xml文件生成book类
*/
@Test
public void test02() throws DocumentException {
//1,读取books.xml文件
SAXReader reader = new SAXReader();
//2.通过document对象获取根元素
Document document = reader.read("src/books/books.xml");
//3.通过根元素获取book标签对象
Element rootElement = document.getRootElement();
//element()和elements()都是通过标签名查找子元素
List<Element> books = rootElement.elements("book");
//4.遍历,处理每个book标签为book类
for (Element book : books){
//asXML()把标签对象,转换为标签字符串
Element nameElement = book.element("name");
// getText(); 可以获取标签中的文本内容
String nameText = nameElement.getText();
// 直接获取指定标签名的文本内容
String priceText = book.elementText("price");
String authorText = book.elementText("author");
String snValue = book.attributeValue("sn");
System.out.println(new Book(snValue,nameText,Double.parseDouble(priceText),authorText));
}
}
}