1. 程式人生 > >XML配置檔案的編寫與解析

XML配置檔案的編寫與解析

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 屬性值必須加引號

  • 實體引用

  • &lt; < less than &gt; > greater than
    &amp; & ampersand &apo; apostrophe
    &quot; " 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");