萬維網聯盟(W3C)
萬維網聯盟(W3C)創建於1994年,又稱W3C理事會。1994年10月在麻省理工學院計算機科學實驗室成立。建立者: Tim Berners-Lee (蒂姆·伯納斯·李)。是Web技術領域最具權威和影響力的國際中立性技術標准機構。到目前為止,W3C已發布了200多項影響深遠的Web技術標准及實施指南,
-
如廣為業界采用的超文本標記語言HTML(標准通用標記語言下的一個應用)、
-
可擴展標記語言XML(標准通用標記語言下的一個子集)
-
以及幫助殘障人士有效獲得Web信息的無障礙指南(WCAG)等
XML的全稱為(EXtensible Markup Language),是一種可擴展的標記語言標記語言: 通過標簽來描述數據的一門語言(標簽有時我們也將其稱之為元素)可擴展:標簽的名字是可以自定義的,XML文件是由很多標簽組成的,而標簽名是可以自定義的
-
作用
-
用於進行存儲數據和傳輸數據
-
作為軟件的配置文件
-
-
作為配置文件的優勢
-
可讀性好
-
可維護性高
-
<student>
標簽必須成對出現
<student> </student>
前邊的是開始標簽,后邊的是結束標簽
特殊的標簽可以不成對,但是必須有結束標記
<address/>
標簽中可以定義屬性,屬性和標簽名空格隔開,屬性值必須用引號引起來
<student id="1"> </student>
標簽需要正確的嵌套
這是正確的: <student id="1"> <name>張三</name> </student>
這是錯誤的: <student id="1"><name>張三</student></name>
語法規則
-
XML文件的后綴名為:xml
-
文檔聲明必須是第一行第一列
<?xml version=“1.0” encoding=“UTF-8” standalone=“yes”?>version:該屬性是必須存在的encoding:該屬性不是必須的
打開當前xml文件的時候應該是使用什么字符編碼表(一般取值都是UTF-8)
standalone: 該屬性不是必須的,描述XML文件是否依賴其他的xml文件,取值為yes/no
-
必須存在一個根標簽,有且只能有一個
-
XML文件中可以定義注釋信息
-
XML文件中可以存在以下特殊字符
< < 小於 > > 大於 & & 和號 ' ' 單引號 " " 引號
XML文件中可以存在CDATA區
<![CDATA[ …內容… ]]>
示例代碼

<?xml version="1.0" encoding="UTF-8" ?> <!--注釋的內容--> <!--本xml文件用來描述多個學生信息--> <students> <!--第一個學生信息--> <student id="1"> <name>張三</name> <age>23</age> <info>學生< >>>>>>>>>>>的信息</info> <message> <![CDATA[內容 <<<<<< >>>>>> ]]]></message> </student> <!--第二個學生信息--> <student id="2"> <name>李四</name> <age>24</age> </student> </students>
-
概述
xml解析就是從xml中獲取到數據
-
常見的解析思想
DOM(Document Object Model)文檔對象模型:就是把文檔的各個組成部分看做成對應的對象。會把xml文件全部加載到內存,在內存中形成一個樹形結構,再獲取對應的值
常見的解析工具
-
JAXP: SUN公司提供的一套XML的解析的API
-
JDOM: 開源組織提供了一套XML的解析的API-jdom
-
DOM4J: 開源組織提供了一套XML的解析的API-dom4j,全稱:Dom For Java
-
pull: 主要應用在Android手機端解析XML
解析的准備工作
-
-
我們可以通過網站:https://dom4j.github.io/ 去下載dom4j
-
將提供好的dom4j-1.6.1.zip解壓,找到里面的dom4j-1.6.1.jar
-
在idea中當前模塊下新建一個libs文件夾,將jar包復制到文件夾中
-
選中jar包 -> 右鍵 -> 選擇add as library即可
-
-
需求
-
解析提供好的xml文件
-
將解析到的數據封裝到學生對象中
-
並將學生對象存儲到ArrayList集合中
-
遍歷集合
-
-

<?xml version="1.0" encoding="UTF-8" ?> <!--注釋的內容--> <!--本xml文件用來描述多個學生信息--> <students> <!--第一個學生信息--> <student id="1"> <name>張三</name> <age>23</age> </student> <!--第二個學生信息--> <student id="2"> <name>李四</name> <age>24</age> </student> </students> // 上邊是已經准備好的student.xml文件 public class Student { private String id; private String name; private int age; public Student() { } public Student(String id, String name, int age) { this.id = id; this.name = name; this.age = age; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Student{" + "id='" + id + '\'' + ", name='" + name + '\'' + ", age=" + age + '}'; } } /** * 利用dom4j解析xml文件 */ public class XmlParse { public static void main(String[] args) throws DocumentException { //1.獲取一個解析器對象 SAXReader saxReader = new SAXReader(); //2.利用解析器把xml文件加載到內存中,並返回一個文檔對象 Document document = saxReader.read(new File("myxml\\xml\\student.xml")); //3.獲取到根標簽 Element rootElement = document.getRootElement(); //4.通過根標簽來獲取student標簽 //elements():可以獲取調用者所有的子標簽.會把這些子標簽放到一個集合中返回. //elements("標簽名"):可以獲取調用者所有的指定的子標簽,會把這些子標簽放到一個集合中並返回 //List list = rootElement.elements(); List<Element> studentElements = rootElement.elements("student"); //System.out.println(list.size()); //用來裝學生對象 ArrayList<Student> list = new ArrayList<>(); //5.遍歷集合,得到每一個student標簽 for (Element element : studentElements) { //element依次表示每一個student標簽 //獲取id這個屬性 Attribute attribute = element.attribute("id"); //獲取id的屬性值 String id = attribute.getValue(); //獲取name標簽 //element("標簽名"):獲取調用者指定的子標簽 Element nameElement = element.element("name"); //獲取這個標簽的標簽體內容 String name = nameElement.getText(); //獲取age標簽 Element ageElement = element.element("age"); //獲取age標簽的標簽體內容 String age = ageElement.getText(); // System.out.println(id); // System.out.println(name); // System.out.println(age); Student s = new Student(id,name,Integer.parseInt(age)); list.add(s); } //遍歷操作 for (Student student : list) { System.out.println(student); } } }