xml是可扩展的标记性语言,xml的主要作用有:
🍁xml元素
时间简史 霍金 75 JavaWeb 9527 99.9
xml注释:
不同于html元素(标签),xml的元素可以自己定义,命名规则:
xml也分单标签和双标签
和html一样,都有属性来提供元素的额外信息。
🍺需要注意的是:
xml文档必须有且只有一个根元素,根元素即没有父标签的元素。
🍁文本区域(CDATA区)
CDATA区里的文本内容,只是纯文本,不会被xml语法解析
语法:
举例:
和html一样,xml做为可扩展的标记性语言,也可以使用w3c组织制定的dom技术来解析。
document对象表示的是整个文档(可以是html,也可以是xml文档)
早期的JDK提供了两种xml解析技术:
除了以上,还有第三方解析:
第三方解析需要使用第三方提供的类库。
下载dom4j.jar:
①、进入此网址
②、进入网址后搜索dom4j:
下载到本地:
复制jar包到项目下,右键Add as Library…
xml文件内容:
时间简史 霍金 75 JavaWeb 9527 99.9
根据xml文件,定义Book类:
package com.code.book;import java.math.BigDecimal;public class Book {private String sn;private String name;private double price;private String author;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;}@Overridepublic String toString() {return "Book{" +"sn='" + sn + '\'' +", name='" + name + '\'' +", price=" + price +", author='" + author + '\'' +'}';}
}
定义解析成相关对象的方法:
import java.util.List;public class Dom4jTest {public static void main(String[] args) throws DocumentException {new Dom4jTest().parse();}/*** 读取books.xml文件生成book类*/public void parse() throws DocumentException {//创建一个SaxReader输入流SAXReader reader= new SAXReader();//读取books.xml文件,生成Document对象Document document = reader.read("xml/src/books.xml");//通过Document对象获取根元素Element rootElement = document.getRootElement();System.out.println(rootElement);//通过根元素获取book标签对象//element和elements方法都是通过标签名查找子元素,有多个的时候用sList bookList = rootElement.elements("book");//遍历,将每个book标签转换为Book类for(Element book : bookList){//asXML方法是把标签对象转换为标签字符串System.out.println(book.asXML());//继续用element方法取子元素Element nameElement = book.element("name");//System.out.println(nameElement.asXML());//getText方法可以获取标签中的文本内容String nameText = nameElement.getText();//也可直接使用elementText方法获取指定标签名的文本内容String bookName = book.elementText("name");String bookAuthor = book.elementText("author");String bookPrice = book.elementText("price");//获取标签属性值String snValue = book.attributeValue("sn");//从xml中拿到数据以后,new对象Book bookObj = new Book(snValue,bookName,Double.parseDouble(bookPrice),bookAuthor);System.out.println(bookObj);}}
}
运行效果:
🍁相关方法提取: