XML和Dom4j
XML和Dom4j
在資料傳輸的時候直接傳輸字串是不可行的, 所以我們使用一種特別的方式來傳輸, 就是XML.
-
XML 指可擴充套件標記語言(EXtensible Markup Language)
-
XML 是一種標記語言,很類似 HTML,HTML檔案也是XML文件
-
XML 的設計宗旨是傳輸資料,而非顯示資料
-
XML 標籤沒有被預定義。您需要自行定義標籤。
-
XML 被設計為具有自我描述性(就是易於閱讀)。
-
XML 是 W3C 的推薦標準
W3C在1988年2月釋出1.0版本,2004年2月又釋出1.1版本,單因為1.1版本不能向下相容1.0版本,所以1.1沒有人用。同時,在2004年2月W3C又釋出了1.0版本的第三版。我們要學習的還是1.0版本。
XML 與 HTML 的主要差異
- XML 不是 HTML 的替代。
- XML 和 HTML 為不同的目的而設計。
- XML 被設計為傳輸和儲存資料,其焦點是資料的內容。
- HTML 被設計用來顯示資料,其焦點是資料的外觀。
- HTML 旨在顯示資訊,而 XML 旨在傳輸資訊。
XML檔案案例編寫person.xml檔案
需求
編寫xml文件,用於描述人員資訊,person代表一個人員,id是人員的屬性代表人員編號。人員資訊包括age年齡、name姓名、sex性別資訊。
效果
使用瀏覽器執行person.xml檔案效果如下
實現步驟
步驟1:使用idea開發工具,選擇當前專案滑鼠右鍵新建“”,如圖
步驟2:編寫檔案person.xml檔案,內容如下:
<?xml version="1.0" encoding="UTF-8"?>
<person id="110">
<age>18</age> <!--年齡-->
<name>張三</name> <!--姓名-->
<sex/> <!--性別-->
</person>
步驟3:如圖點選瀏覽器執行
步驟4:瀏覽器執行效果如下
XML作用和組成元素
- XML的作用
XML在企業開發中主要有兩種應用場景:
1)XML可以儲存資料 , 作為資料交換的載體(使用XML格式進行資料的傳輸)。
2)XML也可以作為配置檔案,例如後面框架階段我們學習的Spring框架的配置(applicationContext.xml)都是通過XML進行配置的(企業開發中經常使用的)
- XML的組成元素
XML檔案中常見的組成元素有:文件宣告、元素、屬性、註釋、轉義字元、字元區。
文件宣告
<?xml version="1.0" encoding="utf-8" ?>
- 使用IDE建立xml檔案時就帶有文件宣告.
- 文件宣告必須為<?xml開頭,以?>結束
- 文件宣告必須從文件的0行0列位置開始
- 文件宣告中常見的兩個屬性:
- version:指定XML文件版本。必須屬性,這裡一般選擇1.0;
- enconding:指定當前文件的編碼,可選屬性,預設值是utf-8;
元素element
格式1:<person></person>
格式2:<person/>
- 元素是XML文件中最重要的組成部分;
- 普通元素的結構由開始標籤、元素體、結束標籤組成。
- 元素體:元素體可以是元素,也可以是文字,例如:
<person><name>張三</name></person>
- 空元素:空元素只有標籤,而沒有結束標籤,但元素必須自己閉合,例如:
<sex/>
- 元素命名
- 區分大小寫
- 不能使用空格,不能使用冒號
- 不建議以XML、xml、Xml開頭
- 格式化良好的XML文件,有且僅有一個根元素。
屬性
<person id="110">
- 屬性是元素的一部分,它必須出現在元素的開始標籤中
- 屬性的定義格式:屬性名=“屬性值”,其中屬性值必須使用單引或雙引號括起來
- 一個元素可以有0~N個屬性,但一個元素中不能出現同名屬性
- 屬性名不能使用空格 , 不要使用冒號等特殊字元,且必須以字母開頭
註釋
<!--註釋內容-->
XML的註釋與HTML相同,既以<!--
開始,-->
結束。
轉義字元
XML中的轉義字元與HTML一樣。因為很多符號已經被文件結構所使用,所以在元素體或屬性值中想使用這些符號就必須使用轉義字元(也叫實體字元),例如:">"、"<"、"’"、"""、"&"。
字元 | 預定義的轉義字元 | 說明 |
---|---|---|
< | < | 小於 |
> | > | 大於 |
" | " | 雙引號 |
’ | ' | 單引號 |
& | & | 和號 |
注意:嚴格地講,在 XML 中僅有字元 “<“和”&” 是非法的。省略號、引號和大於號是合法的,但是把它們替換為實體引用是個好的習慣。
轉義字元應用示例:
假如您在 XML 文件中放置了一個類似 “<” 字元,那麼這個文件會產生一個錯誤,這是因為解析器會把它解釋為新元素的開始。因此你不能這樣寫:
<message>if salary < 1000 then</message>
為了避免此類錯誤,需要把字元 “<” 替換為實體引用,就像這樣:
<message>if salary < 1000 then</message>
字元區(瞭解)
<![CDATA[
文字資料
]]>
- CDATA 指的是不應由 XML 解析器進行解析的文字資料(Unparsed Character Data)
- CDATA 部分由 “<![CDATA[" 開始,由 "]]>” 結束;
- 當大量的轉義字元出現在xml文件中時,會使XML文件的可讀性大幅度降低。這時如果使用CDATA段就會好一些。
注意:
CDATA 部分不能包含字串 “]]>”。也不允許巢狀的 CDATA 部分。
標記 CDATA 部分結尾的 “]]>” 不能包含空格或折行。
XML檔案的約束-DTD約束
在XML技術裡,可以編寫一個文件來約束一個XML文件的書寫規範,這稱之為XML約束。
常見的xml約束:DTD、Schema
注意:我們對於約束的要求是能通過已寫好的約束檔案編寫xml文件.
DTD是文件型別定義(Document Type Definition)。DTD 可以定義在 XML 文件中出現的元素、這些元素出現的次序、它們如何相互巢狀以及XML文件結構的其它詳細資訊。
約束體驗
體驗效果說明:當編寫xml文件時不符合指定dtd約束時,進行提示xml編寫錯誤,如下圖:
體驗步驟:
步驟1:複製bookshelf.dtd檔案
步驟2:bookshelf.dtd檔案內容如下
<!ELEMENT 書架 (書+)>
<!ELEMENT 書 (書名,作者,售價)><!--約束元素書的子元素必須為書名、作者、售價-->
<!ELEMENT 書名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 售價 (#PCDATA)>
步驟三:新建books.xml,程式碼如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE 書架 SYSTEM "bookshelf.dtd"><!--指定使用bookshelf.dtd檔案約束當前xml文件-->
<書架>
<書>
<書名>JavaWeb開發教程</書名>
<作者>張孝祥</作者>
<售價>100.00元</售價>
</書>
<書>
<書名>三國演義</書名>
<作者>羅貫中</作者>
<售價>100.00元</售價>
<測試>hello</測試><!--不符合約束,書的子元素必須為書名、作者、售價-->
</書>
</書架>
步驟四:idea開發工具books.xml的dtd約束驗證不通過的效果如下
在企業實際開發中,我們很少自己編寫DTD約束文件,通常情況下通過框架提供的DTD約束文件編寫對應的XML文件。所以這一知識點的要求是可以根據DTD約束文件內容編寫XML文件。
文件宣告
-
內部DTD,在XML文件內部嵌入DTD,只對當前XML有效。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE 根元素 [...//具體語法]><!--內部DTD--> <根元素> </根元素>
-
外部DTD—本地DTD,DTD文件在本地系統上,企業內部自己專案使用。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE 根元素 SYSTEM "bookshelf.dtd"><!--外部本地DTD--> <根元素> </根元素>
-
外部DTD—公共DTD,DTD文件在網路上,一般都有框架提供 , 也是我們使用最多的.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> </web-app>
元素宣告
-
約束元素的巢狀層級
語法
<!ELEMENT 父標籤 (子標籤1,子標籤2,…)>
程式碼
<!ELEMENT 書架 (書+)> <!--約束根元素是"書架","書架"子元素為"書",“+”為數量詞,請看下面介紹--> <!ELEMENT 書 (書名,作者,售價)><!--約束"書"子元素依次為“書名”、“作者”、“售價”,“+”書元素至少1次-->
-
約束元素體裡面的資料
語法
<!ELEMENT 標籤名字 標籤型別>
標籤型別
標籤型別 程式碼寫法 說明 PCDATA (#PCDATA) 被解釋的字串資料 EMPTY EMPTY 即空元素,例如<hr/> ANY ANY 即任意型別 程式碼
<!ELEMENT 書名 (#PCDATA)> <!--"書名"元素體為字串資料--> <!ELEMENT 作者 (#PCDATA)> <!--"作者"元素體為字串資料--> <!ELEMENT 售價 (#PCDATA)> <!--"售價"元素體為字串資料--> <!ELEMENT 出版日期 ANY> <!--"出版日期"元素體為任意型別--> <!ELEMENT 版本號 EMPTY> <!--"版本號"元素體為空元素-->
-
數量詞(掌握)
數量詞符號 含義 * 表示元素可以出現0到多個 + 表示元素可以出現至少1個 ? 表示元素可以是0或1個 , 表示元素需要按照順序顯示 | 表示元素需要選擇其中的某一個
屬性宣告
語法
<!ATTLIST 標籤名稱
屬性名稱1 屬性型別1 屬性說明1
屬性名稱2 屬性型別2 屬性說明2
…
>
屬性型別
屬性型別 | 含義 |
---|---|
CDATA | 代表屬性是文字字串, eg:<!ATTLIST 屬性名 CDATA 屬性說明> |
ID | 程式碼該屬性值唯一,不能以數字開頭, eg:<!ATTLIST 屬性名 ID 屬性說明> |
ENUMERATED | 代表屬性值在指定範圍內進行列舉 Eg:<!ATTLIST屬性名 (社科類|工程類|教育類) “社科類”> “社科類"是預設值,屬性如果不設定預設值就是"社科類” |
屬性說明
屬性說明 | 含義 |
---|---|
#REQUIRED | 代表屬性是必須有的 |
#IMPLIED | 代表屬性可有可無 |
#FIXED | 代表屬性為固定值,實現方式:book_info CDATA #FIXED “固定值” |
程式碼
<!ATTLIST 書 <!--設定"書"元素的的屬性列表-->
id ID #REQUIRED <!--"id"屬性值為必須有-->
編號 CDATA #IMPLIED <!--"編號"屬性可有可無-->
出版社 (清華|北大|傳智播客) "傳智播客" <!--"出版社"屬性值是列舉值,預設為“傳智播客”-->
type CDATA #FIXED "IT" <!--"type"屬性為文字字串並且固定值為"IT"-->
>
schema約束
schema和DTD一樣, 也是一種XML檔案的約束.
Schema 語言也可作為 XSD(XML Schema Definition)。
Schema 比DTD強大,是DTD代替者。
Schema 本身也是XML文件,單Schema文件副檔名為xsd,而不是xml。
Schema 功能更強大,資料型別約束更完善。
約束體驗
體驗效果說明:體驗schema約束XML文件中對元素體資料型別的約束。效果如下:
DTD約束無法對具體資料型別進行約束,所以開發工具沒有任何錯誤提示,如下效果:
實現步驟
步驟1:複製schema約束檔案bookshelf.xsd,其中已對售價約束了資料型別,程式碼如下
<?xml version="1.0" encoding="UTF-8" ?>
<!--
傳智播客DTD教學例項文件.將註釋中的以下內容複製到要編寫的xml的宣告下面
複製內容如下:
<書架 xmlns="http://www.itcast.cn"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.itcast.cn bookshelf.xsd"
>
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.itcast.cn"
elementFormDefault="qualified">
<xs:element name='書架' >
<xs:complexType>
<xs:sequence maxOccurs='unbounded' >
<xs:element name='書' >
<xs:complexType>
<xs:sequence>
<xs:element name='書名' type='xs:string' />
<xs:element name='作者' type='xs:string' />
<xs:element name='售價' type='xs:double' />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
步驟2:新建books2.xml使用schema約束檔案bookshelf.xsd,程式碼如下
<?xml version="1.0" encoding="UTF-8"?>
<書架
xmlns="http://www.itcast.cn"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.itcast.cn bookshelf.xsd"
><!--指定schema文件約束當前XML文件-->
<書>
<書名>JavaScript網頁開發</書名>
<作者>張孝祥</作者>
<售價>abc</售價>
</書>
</書架>
步驟3:開發工具提示效果
名稱空間
一個XML文件最多可以使用一個DTD檔案,但一個XML文件中使用多個Schema檔案,若這些Schema檔案中定義了相同名稱的元素時,使用的時候就會出現名字衝突。這就像一個Java檔案中使用了import java.util.*
和import java.sql.*
時,在使用Date類時,那麼就不明確Date是哪個包下的Date了。同理 , 在XML文件中就需要通過名稱空間(namespace)來區分元素和屬性是來源於哪個約束中的。名稱空間就在在根元素後面的內容 , 使用xmlns到引入約束 。
當一個XML文件中需要使用多個Schema檔案的時候 , 有且僅有一個使用預設的 , 其他的名稱空間都需要起別名 。參考applicationContext.xml檔案(spring框架的配置檔案)
xmlns="http://www.itcast.cn"
<!-- 預設的名稱空間.使用此約束中的元素的時候只需要寫元素名即可 例如:<書></書> -->
xmlns:aa="http://java.sun.com"
<!-- aa就是此約束的別名,使用此約束中的元素的時候就需要加上別名 例如:<aa:書></aa:書> -->
總之名稱空間就是用來處理元素和屬性的名稱衝突問題,與Java中的包是同一用途。如果每個元素和屬性都有自己的名稱空間,那麼就不會出現名字衝突問題,就像是每個類都有自己所在的包一樣,那麼類名就不會出現衝突。
雖然schema功能比dtd強大,但是編寫要比DTD複雜,同樣以後我們在企業開發中也很少會自己編寫schema檔案。
Dom4j-XML解析
當將資料儲存在XML後,我們就希望通過程式獲取XML的內容。如果我們使用Java基礎所學的IO知識是可以完成的,不過你學要非常繁瑣的操作才可以完成,且開發中會遇到不同問題(只讀、讀寫)。人們為不同問題提供不同的解析方式,使用不同的解析器進行解析,方便開發人員操作XML。
解析方式和解析器
-
開發中比較常見的解析方式有三種,如下:
-
DOM:要求解析器把整個XML文件裝載到記憶體,並解析成一個Document物件
a)優點:元素與元素之間保留結構關係,故可以進行增刪改查操作。
b)缺點:XML文件過大,可能出現記憶體溢位
-
SAX:是一種速度更快,更有效的方法。她逐行掃描文件,一邊掃描一邊解析。並以事件驅動的方式進行具體解析,沒執行一行,都觸發對應的事件。(瞭解)
a)優點:處理速度快,可以處理大檔案
b)缺點:只能讀,逐行後將釋放資源,解析操作繁瑣。
-
PULL:Android內建的XML解析方式,類似SAX。(瞭解)
-
-
解析器,就是根據不同的解析方式提供具體實現。有的解析器操作過於繁瑣,為了方便開發人員,有提供易於操作的解析開發包
-
常見的解析開發包
- JAXP:sun公司提供支援DOM和SAX開發包
- Dom4j:比較簡單的的解析開發包(常用)
- JDom:與Dom4j類似
- Jsoup:功能強大DOM方式的XML解析開發包,尤其對HTML解析更加方便(專案中講解)
Dom4j的基本使用
DOM解析原理及結構模型
-
解析原理
XML DOM 和 HTML DOM一樣,XML DOM 將整個XML文件載入到記憶體,生成一個DOM樹,並獲得一個Document物件,通過Document物件就可以對DOM進行操作。以下面books.xml文件為例。
<?xml version="1.0" encoding="UTF-8"?> <books> <book id="0001"> <name>JavaWeb開發教程</name> <author>張孝祥</author> <sale>100.00元</sale> </book> <book id="0002"> <name>三國演義</name> <author>羅貫中</author> <sale>100.00元</sale> </book> </books>
-
結構模型
DOM中的核心概念就是節點,在XML文件中的元素、屬性、文字,在DOM中都是節點!所有的節點都封裝到了Document物件中。
-
引入dom4j的jar包
需要引入“jar/dom4j-1.6.1.jar” , 在IDEA中,選擇專案滑鼠右鍵—>彈出選單–>open Module settings”–>Dependencies–>±->JARs or directories…
找到dom4j-1.6.1.jar,成功新增之後點選"OK" 即可.
-
dom4j 必須使用核心類SaxReader載入xml文件獲得Document,通過Document物件獲得文件的根元素,然後就可以操作了。
常用的方法
SaxReader物件
方法 | 作用 |
---|---|
new SaxReader() | 構造器 |
Document read(String url) | 載入執行xml文件 |
Document物件
方法 | 作用 |
---|---|
Element getRootElement() | 獲得根元素 |
Element物件
方法 | 作用 |
---|---|
List elements([String ele] ) | 獲得指定名稱的所有子元素。可以不指定名稱 |
Element element([String ele]) | 獲得指定名稱第一個子元素。可以不指定名稱 |
String getName() | 獲得當前元素的元素名 |
String attributeValue(String attrName) | 獲得指定屬性名的屬性值 |
String elementText(Sting ele) | 獲得指定名稱子元素的文字值 |
String getText() | 獲得當前元素的文字內容 |
方法演示
複製資料下的常用xml中"books.xml",內容如下:
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book id="0001">
<name>JavaWeb開發教程</name>
<author>張孝祥</author>
<sale>100.00元</sale>
</book>
<book id="0002">
<name>三國演義</name>
<author>羅貫中</author>
<sale>100.00元</sale>
</book>
</books>
注意:為了便於解析,此xml中沒有新增約束
解析此檔案,獲取每本書的id值,以及書本名稱,作者名稱和價格.
public class Demo {
public static void main(String[] args) throws DocumentException {
SAXReader reader = new SAXReader();
Document document = reader.read(Demo.class.getResourceAsStream("/books.xml"));
//獲取根元素 books
Element elemRoot = document.getRootElement();
//獲取根元素的所有子元素 book
List<Element>list = elemRoot.elements();
//遍歷集合 獲取每一個book
for(Element element : list){
//獲取book的id屬性
String id =element.attributeValue("id");
System.out.println("id : "+ id);
//獲取book下的所有子元素 name,author,sale
List<Element>listElem = element.elements();
//遍歷集合 獲取每一個子元素
for(Element elem : listElem){
//元素名
String name = elem.getName();
//文字值
String text = elem.getText();
System.out.println("--- " + name + " : " + text);
}
}
}
}
Dom4J結合XPath解析XML
XPath 使用路徑表示式來選取HTML 文件中的元素節點或屬性節點。節點是通過沿著路徑 (path) 來選取的。XPath在解析HTML文件方面提供了一獨樹一幟的路徑思想。
XPath使用步驟
步驟1:匯入jar包(dom4j和jaxen-1.1-beta-6.jar)
步驟2:通過dom4j的SaxReader獲取Document物件
步驟3: 利用Xpath提供的api,結合xpaht的語法完成選取XML文件元素節點進行解析操作。
document常用的api
方法 | 作用 |
---|---|
List selectNodes(“表示式”) | 獲取符合表示式的元素集合 |
Element selectSingleNode(“表示式”) | 獲取符合表示式的唯一元素 |
XPath語法(瞭解)
-
XPath表示式,就是用於選取HTML文件中節點的表示式字串。
獲取XML文件節點元素一共有如下4種XPath語法方式:
- 絕對路徑表示式方式 例如: /元素/子元素/子子元素…
- 相對路徑表示式方式 例如: 子元素/子子元素… 或者 ./子元素/子子元素…
- 全文搜尋路徑表示式方式 例如: //子元素//子子元素
- 謂語(條件篩選)方式 例如: //元素[@attr1=value]
-
獲取不同節點語法
獲取型別 語法程式碼 獲取元素節點 元素名稱 獲取屬性節點 @屬性名稱
絕對路徑表示式(瞭解)
-
絕對路徑介紹
格式: String xpath="/元素/子元素/子子元素…";
絕對路徑是以“/”開頭,一級一級描述標籤的層級路徑就是絕對路徑,這裡注意不可以跨層級
絕對路徑是從根元素開始寫路徑的,這裡開頭的“/”代表HTML文件根元素,所以在絕對路徑中不可以寫根元素路徑
-
演示需求(解析XML文件為"資料\常用xml檔案\index.html")
需求:採用絕對路徑獲取從根節點開始逐層的html/body/div/ul/li節點列表並列印資訊
相對路徑表示式(瞭解)
-
相對路徑介紹
格式: String xpath1=“子元素/子子元素…”;//獲取相對當前路徑元素裡面的子元素的選取
String xpath2="./子元素/子子元素";//"./"代表當前元素路徑位置
String xpath3="/子元素/子子元素";//功能與xpath1格式功能一樣
相對路徑就是相對當前節點元素位置繼續查詢節點,需要使用JXNode.sel(xpath)進行執行相對路徑表示式。
全文搜尋路徑表示式(瞭解)
-
全文搜尋路徑介紹
格式: String xpath1="//子元素//子子元素";
一個“/”符號,代表逐級寫路徑
2個“//”符號,不用逐級寫路徑,可以直接選取到對應的節點,是全文搜尋匹配的不需要按照逐層級
謂語(條件篩選 瞭解)
-
介紹
謂語,又稱為條件篩選方式,就是根據條件過濾判斷進行選取節點
格式:
String xpath1="//元素[@attr1=value]";//獲取元素屬性attr1=value的元素 String xpath2="//元素[@attr1>value]/@attr1"//獲取元素屬性attr1>value的d的所有attr1的值
String xpath3="//元素[@attr1=value]/text()";//獲取符合條件元素體的自有文字資料
String xpath4="//元素[@attr1=value]/html()";//獲取符合條件元素體的自有html程式碼資料。
String xpath3="//元素[@attr1=value]/allText()";//獲取符合條件元素體的所有文字資料(包含子元素裡面的文字)
演示
public class DemoXpath {
public static void main(String[] args) throws Exception {
SAXReader reader = new SAXReader();
Document document = reader.read(Demo.class.getResourceAsStream("/books.xml"));
//獲取所有的book元素
List<Element> list = document.selectNodes("//book");
for (Element ele: list) {
System.out.println(ele.attributeValue("id"));
}
//獲取id為0002的指定book元素的子標籤name的內容
Element ele = (Element)document.selectSingleNode("//book[@id='0002']/name");
System.out.println(ele.getText());
}
}
相關文章
- dom4j遍歷巢狀xml巢狀XML
- java的XML解析(DOM4J技術)JavaXML
- DOM4J 解析 XML 之忽略轉義字元XML字元
- 【超好用API推薦】用dom4j建立XML檔案並寫入節點APIXML
- Spring | xx-servlet.xml 和 applicationContext.xml 的區別SpringServletXMLAPPContext
- XML和JSON的介紹XMLJSON
- XML DOM – 屬性和方法概述XML
- Mybaties 的 xml 配置和 註解BATXML
- 通過Go來分析和建立XMLGoXML
- 使用XML和Java混合控制UI頁面XMLJavaUI
- QDomDocument 讀取和編輯xml檔案XML
- logback的使用和logback.xml詳解XML
- XML基本操作-建立(DOM和LOINQ)和LINQ查詢和儲存XML
- XMLXML
- 求大佬幫助我!!!IDEA中Mybatis的mapper.xml和dao.xml出現問題!!!IdeaMyBatisAPPXML
- 第 2 章 HTML、XML和CSS-帶答案HTMLXMLCSS
- xml序列化和反序列化(一)XML
- dom4j 根據xml節點路徑查詢節點,找到對應的目標節點下的子節點,對節點Text值進行修改XML
- Mybatis 學習筆記(一)——配置檔案SqlMapConfig.xml和對映檔案Mapper.xmlMyBatis筆記SQLXMLAPP
- 使用FOR XML AUTO控制XML輸出KHXML
- MyBatis mapping.xml中的flushCache和useCache的使用MyBatisAPPXML
- XML文件XML
- Xml解析XML
- java-Mybatis XML 對映器(select,insert, update 和 delete)JavaMyBatisXMLdelete
- Java面試題總結之OOA/D,UML,和XMLJava面試題XML
- .NET物件的XML序列化和反序列化物件XML
- Mybatis原始碼分析(二)XML的解析和Annotation的支援MyBatis原始碼XML
- XML和區塊鏈都是發展演進中的怪胎XML區塊鏈
- 序列化篇 生成xml 以及讀取xmlXML
- PHP xml 轉陣列 陣列轉 xml 操作PHPXML陣列
- XML 元素概述XML
- go 解析xmlGoXML
- 7.86 EXTRACT (XML)XML
- 淺析XMLXML
- xml筆記XML筆記
- xml檔案XML
- L.xmlXML
- XML與JSONXMLJSON