XML配置檔案的編寫與解析
阿新 • • 發佈:2019-01-11
xml配置檔案的編寫
xml文件例項
<?xml version="1.0" encoding="UTF-8"?>
<book>
<name>Thinking in java</name>
<author>Bruce Eckel</author>
<price>108.00</price>
<evaluate>good's book</evaluate>
</book>
什麼是 XML?
- XML 指可擴充套件標記語言(EXtensible Markup Language)。
- XML 是一種很像HTML的標記語言。
- XML 的設計宗旨是傳輸資料,而不是顯示資料。
- XML 標籤沒有被預定義。您需要自行定義標籤。
- XML 被設計為具有自我描述性。
- XML 是 W3C 的推薦標準。
XML 用途
- XML 把資料從 HTML 分離
- XML 簡化資料共享
- XML 簡化資料傳輸
- XML 簡化平臺變更
- XML 使您的資料更有用
- XML 用於建立新的網際網路語言
XML 樹結構
XML 語法規則
-
XML 文件必須有根元素
-
XML 宣告:
-
<?xml version="1.0" encoding="utf-8"?>
-
所有的 XML 元素都必須有一個關閉標籤
-
XML 標籤對大小寫敏感
-
XML 必須正確巢狀
-
XML 屬性值必須加引號
-
實體引用
-
< < less than > > greater than & & ampersand &apo; ’ apostrophe " " quotation mark -
XML 中的註釋
-
<!-- This is a annotation -->
-
在 XML 中,空格會被保留
-
XML 以 LF 儲存換行
什麼是 XML 元素?
XML 元素指的是從(且包括)開始標籤直到(且包括)結束標籤的部分。
一個元素可以包含:
- 其他元素
- 文字
- 屬性
- 或混合以上所有…
元素命名規則
XML 元素必須遵循以下命名規則:
- 名稱可以包含字母、數字以及其他的字元
- 名稱不能以數字或者標點符號開始
- 名稱不能以字母 xml(或者 XML、Xml 等等)開始
- 名稱不能包含空格
可使用任何名稱,沒有保留的字詞。
最佳命名習慣
使名稱具有描述性。使用下劃線的名稱也很不錯:
< first_name>、< last_name>。
名稱應簡短和簡單,比如:< book_title>,而不是:< the_title_of_the_book>。
避免 “-” 字元。如果您按照這樣的方式進行命名:“first-name”,一些軟體會認為您想要從 first 裡邊減去 name。
避免 “.” 字元。如果您按照這樣的方式進行命名:“first.name”,一些軟體會認為 “name” 是物件 “first” 的屬性。
避免 “:” 字元。冒號會被轉換為名稱空間來使用(稍後介紹)。
XML 文件經常有一個對應的資料庫,其中的欄位會對應 XML 文件中的元素。有一個實用的經驗,即使用資料庫的命名規則來命名 XML 文件中的元素。
在 XML 中,éòá 等非英語字母是完全合法的,不過需要留意,您的軟體供應商不支援這些字元時可能出現的問題。
XML 屬性
XML 屬性必須加引號,屬性值必須被引號包圍,不過單引號和雙引號均可使用。例如:
<person sex="female">
xml配置檔案的解析
使用dom4j和xpath對xml配置檔案的解析
需要匯入的jar:
dom4j : dom4j-1.6.1.jar
xpath : jaxen-1.1-beta-6.jar
//建立SAXReader物件
SAXReader saxReader = new SAXReader();
//獲取編譯後的classes檔案目錄
String path = NewInstanceUtils.class.getClassLoader().getResource("").getPath();
//SAXReader讀取配置檔案,獲取虛擬文件物件Document
Document document = saxReader.read(path+"configuration.xml");
//選中name屬性值為name的單個節點
Node node = document.selectSingleNode("//element[@name='"+name+"']");
//將節點轉換成元素物件
Element element = (Element) node;
//通過該元素物件獲取元素的文字字串
String text = element.getText();
//通過該元素物件獲取該元素id屬性值
String idValue = element.attributeValue("id");