XML

一.XML概述

定義:Extensible Makeup Language(可擴展標記語言);

作用:

1.存儲數據,有良好的存儲格式,多種語言通用

2.作爲配置文件,許多框架都使用xml作爲配置文件

語法:

1.文件後綴名必須爲.xml;

2.文檔聲明必須寫在第一行,且前面不能空格,一般寫法:<?xml version="1.0" encoding="UTF-8"?>;

3.註釋格式:<?--    -->(ST快捷鍵 ctrl+shift+/);

4.元素(標籤):xml文件的基本組成部分,由開頭和結尾組成:開頭由一對<>和元素名組成;結尾<>內多一正斜槓,如:<Peson></Person>;

5.根元素:最先出現的元素,根元素只有一對;

6.元素體:元素兩個<>中出現的文本,如<Person>text</Person>中的text稱爲元素體;

7.屬性:元素的組成部分,寫在開始標籤裏.屬性名必須以英文字母開頭,不能有空格且不能重複,格式爲:屬性名=屬性值,屬性值需用""或''包裹,如<Person id="001"></Person>,id即爲屬性

8.轉義字符:> ----- &lt; < ---- &gt; " ---- &quot; ' ---- &apos; & ---- &amp;

9.CDATA區:格式<?[CDATA[--內容--]]>,內容區直接原樣展示,不被xml解析器解析;

關於文檔聲明的補充:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

1.聲明語句必須有version屬性,encoding和standalone是可選的;

2.三個屬性同時存在時必須按上述順序排列;

3.如果沒有聲明encoding屬性,則解析時默認採用uft-8或utf-16;如果不聲明,解析器也不支持utf-8吉utf-16,則引起解析出錯;

4.standalone只有兩個值"yes"或"no",no表示文檔可能依賴於一個DTD文件存在;yes表示可以獨立存在.

二.XML解析

兩種方式:

SAX解析:逐行解析;效率高,不易出現內存不足的情況;但是隻能對xml解析,且不能進行增刪改的操作

DOM解析:將整個文件加載到內存中,形成一個Document對象,對該對象進行解析,優點是可以進行增刪改的操作,但是容易出現內存不足的情況

解析工具:常用工具爲dom4j.jar包

JAXP:sun公司提供支持DOM和SAX開發包

JDom:dom4j兄弟

jsoup:一種處理HTML特定解析開發包

dom4j:比較常用的解析開發包,hibernate底層採用。


三.Dom4j的常用API

SAXReader類:

定義:public class SAXReader extends Object

構造方法:

SAXReader()

普通方法:

public Document read(String systemId) throws DocumentException{}:根據路徑讀xml文件,得到一個文檔對象!

Document接口:

定義:public interface Document extends Branch

普通方法:

public Element getRootElement(){}:獲取根標籤對象

Element接口:

定義:

public interface Element extends Branch

普通方法:

public Element element(String name){}:Returns the first element for the given local name and any namespace.

public Element element(QName qName){}:Returns the first element for the given fully qualified name.

==========================================================================================================

public List elements(){}:獲取該標籤對象下的所有子標籤

public List elements(String name){}:面向該元素對象,獲取指定名稱的子標籤

public String attributeValue(String name){}:面向元素對象,根據屬性名獲取屬性值

public String getText(){}:面向該元素對象,獲取元素體;(如果元素體是一個標籤,會得到null)

=============================================================================================

public Iterator elementIterator(){}:Returns an iterator over all this elements child elements.

public Iterator elementIterator(QName qName){}:Returns an iterator over the elements contained in this element 

which match the given fully qualified name.

public Iterator elementIterator(String name){}:Returns an iterator over the elements contained in this element 

which match the given local name and any namespace.

=================================================================================================================

public String elementText(String name){}:

public String elementText(QName qname){}:


Node接口:

定義:public interface Node extends Cloneable

普通方法:

public String getName(){}:返回該節點對象的名稱


代碼演示:

import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class XmlTest {
public static void main(String[] args) throws Exception {
// 創建SAXReader對象
SAXReader sax = new SAXReader();
// 獲取Docu
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章