天天看點

xml解析

XML 指可擴充标記語言(EXtensible Markup Language)

XML 是一種标記語言,很類似 HTML

XML 的設計宗旨是傳輸資料,而非顯示資料

XML 标簽沒有被預定義。您需要自行定義标簽。

XML 被設計為具有自我描述性。

XML 是 W3C 的推薦标準

标簽是由尖括号 包圍的關鍵詞,比如

标簽通常是成對出現 的,比如

标簽對中的第一個标簽是開始标簽 ,第二個标簽是結束标簽 ,開始和結束标簽也被稱為開放标簽 和閉合标簽

空标簽 由 一些标簽沒有内容,可以用一個标簽來表示,比如setting标簽

标簽可以擁有屬性 。屬性提供了有關 HTML 元素的更多的資訊 。

屬性總是以名稱/值對的形式出現,比如:name="value" 。

屬性總是在 HTML 元素的開始标簽 中規定。

執行個體如下

在開始标簽與結束标簽中可以存放文本内容

xml元素指的是從(且包括)開始标簽直到(且包括)結束标簽的部分。

下面的 XML 文檔表示書店中有的書

上述XML文檔可以表示成一個樹形結構

xml解析

XML 文檔必須包含根元素 。該元素是所有其他元素的父元素。

所有 XML 元素都須有關閉标簽。

XML 标簽對大小寫敏感

XML 的屬性值須加引号

XML 必須正确地嵌套

實體引用

在 XML 中,一些字元擁有特殊的意義。

如果你把字元 "<" 放在 XML 元素中,會發生錯誤,這是因為解析器會把它當作新元素的開始。

這樣會産生 XML 錯誤

為了避免這個錯誤,請用實體引用 來代替 "<" 字元:

在 XML 中,有 5 個預定義的實體引用:

<

<

小于

>

>

大于

&

&

'

'

單引号

"

"

引号

XML 中的注釋

在 XML 中編寫注釋的文法與 HTML 的文法很相似:

在 XML 中,空格會被保留

HTML 會把多個連續的空格字元裁減(合并)為一個:

在 XML 中,文檔中的空格不會被删節。

xml文檔聲明

一個 XML 文檔執行個體

第一行:

文法要求<,?,xml之間不能有空格, ?>之間不能有空格,standalone="no"?兩者之間可以有一個或多個空格。

encoding=”utf-8”:那麼解析器讀到該屬性,那麼會以utf-8解碼,如果不寫呢?XML解析器通過尋找XML文檔開始處的位元組序列,能夠自動檢測出文檔中的Unicode編碼是UTF-8還是UTF-16.也就是說encoding屬性的預設值是Unicode編碼,如果文檔是以UTF-8/UTF-16編碼那麼可以不設定該屬性.

standalone屬性用于說明文檔是否獨立(該文檔沒有依賴外面的任何檔案而可以單獨存在(例如依賴dtd檔案) 是以值是yes,)。獨立的文檔是yes, 依賴外部檔案的文檔是no。standalone屬性位于encoding屬性之後。

XML的解析方式分為兩種:1、DOM解析;2、SAX解析

  DOM樹所提供的随機通路方式給應用程式的開發帶來了很大的靈活性,它可以任意地控制整個XML文檔中的内容。然而,由于DOM分析器把整個XML文檔轉化成DOM樹放在了記憶體中,是以,當文檔比較大或者結構比較複雜時,對記憶體的需求就比較高。而且,對于結構複雜的樹的周遊也是一項耗時的操作。是以,DOM分析器對機器性能的要求比較高,實作效率不十分理想。不過,由于DOM分析器所采用的樹結構的思想與XML文檔的結構相吻合,同時鑒于随機通路所帶來的友善,是以,DOM分析器還是有很廣泛的使用價值的。

優點:

1、形成了樹結構,有助于更好的了解、掌握,且代碼容易編寫。

2、解析過程中,樹結構儲存在記憶體中,友善修改。

缺點:

1、由于檔案是一次性讀取,是以對記憶體的耗費比較大。

2、如果XML檔案比較大,容易影響解析性能且可能會造成記憶體溢出。

xml執行個體

上述代碼把XML解析成Document ,對XML元素的通路太過麻煩,還有一種通過XPaht方式的通路方式,在Mybatis中也是采取這種方式

xml對應的java類

java解析代碼