1. XML
可擴展的標記語言
可以用來保存數據
可以用來做配置文件
數據傳輸
-
文檔聲明
簡單聲明,version表示解析這個XML文檔的解析器版本
<? xml version="1.0" ?>
encoding表示編碼
<? xml version="1.0" encoding="utf-8" ?>
standalone表示是否是一個獨立文檔,no表示依賴其他文檔,yes表示是一個獨立的文檔
<? xml version="1.0" encoding="utf-8" standalon="no"?>
-
元素定義
元素就是標籤,文檔聲明下面的第一個標籤爲根標籤,所有標籤必須放置到跟元素裏面
<stus></stus>
-
普通標籤和複雜標籤
普通標籤是標籤裏面包含文本
複雜標是標籤裏面嵌套標籤
-
註釋
與html文檔一樣,<!-- -->,不允許放在第一行,必須放在文檔聲明下面
-
CDATA區
非法字符
在XML中,只有字符
<
和&
是非法的,省略號、引號和大於號是合法的,但是把它們替換成實體引用是個好習慣-
<
-
>
-
&
-
&apos
- &qaot
如果某段字符串中包含類似標籤或者關鍵字,不想讓xml進行解析,可以使用CDATA來包裝 <desc><![CDATA[<a href="www.baidu.com">百度一下,你就指定</a>]]></desc>
-
2. XML解析
其實就是獲取元素裏面的字符數據或者屬性數據
-
XML解析方式
有很多種,但是常用的有兩種
DOM 把整個xml全部讀到內存中,形成樹狀結構,整個文檔稱爲document對象,屬性對應Attribute對象,所有的元素節點對應Element對象,文本也可以稱爲Text對象,以上所有節點稱爲Node節點,如果xml文件過大,會造成內存溢出,可以對文檔進行增刪操作
SAX 基於事件驅動,讀取一行,解析一行,不可以增刪,只能查詢
-
針對這兩種解析方式API
一些組織或者公司,針對以上兩種方式,給出的解決方案有哪些
jaxp sun公司,比較繁瑣
jdom
dom4j 使用比較廣泛
- Dom4j基本用法
//創建SAX讀取對象
SAXReader reader = new SAXReader();
//指定解析源
Document document = reader.read(new File("src/com/kernel/test/demo03.xml"));
//獲得根標籤
Element rootElement = document.getRootElement();
//獲得子標籤
Element sonElement = rootElement.element("stu");
//獲取所有子標籤
List list = rootElement.elements();
//獲取標籤的屬性值
element.element("name").getText()
-
Xpath使用
nodename 選區此節點的所有子節點
/:從根節點選取
//:從匹配選擇的當前節點選擇文檔中的節點,而不考慮位置
.:選取當前節點
..:選取當前節點的父節點
@:選取屬性
3. XML約束
如何讓怎麼規定文檔中的元素只出現一次
DTD
語法自成一體,可讀性較差
http://www.runoob.com/dtd/dtd-tutorial.html
Schema
語法和xml一樣,xml解析起來比較方便