xml為可擴展的標記語言,它允許用戶自定義標籤,一個標籤用於表述一段數據,一個標籤有開始和結束,在開始和結束之間,又可以用其它標籤描述數據。
元素 element
1元素是xml文檔中最重要的組成部分
2普通元素的結構開始標籤、元素體、結束標籤組成。例如:
大家好 3元素體:元素體可以是元素,也可以是文本,例如
4空元素:空元素只有開始標籤,而且沒有結束標籤,但是元素必須自己閉合,例如
元素命名:
A區分大小寫
B不能使用空格,不能使用冒號
C不建議以xml,Xml,XML開頭
D不能以數字或者下劃線開頭
格式化良好的xml文檔,必須只有一個根元素。
屬性也要遵循如下規則:
A區分大小寫
B不能使用空格,不能使用冒號
C不建議以xml,Xml,XML開頭
D不能以數字或者下劃線開頭
在編寫xml文件時,有些內容不可能不想讓解析引擎解析,而當作原始內容處理,遇到這種情況時,可以把這些內容放到CDATA內,xml解析程序不會處理,而是原封不動的輸出
什麼是xml約束?
在xml約束技術裡,可以編寫一個文檔來約束一個xml文檔的書寫規範,這個就是xml約束
常用的xml約束有兩種技術 : xml dtd xml Schema
dtd是什麼?
dtd的引入有三種方式
1. 內部dtd,在xml文檔的內部嵌入DTD,只對當前XML有效
Xml version="1.0" encoding="utf-8" standalone="yes" ?>
….//具體的語法
]>
元素名是自定義的,元素描述分為常見符號和常見類型
屬性語法
一般來說dtd約束文檔並非需要我們寫,而是一般寫好了,而我們只需要讀懂它,然後根據約束文檔,寫我們所需要的xml文件,下面進行實例演練
這個dtd文檔不是普通的文檔,而是servlet2.3規範,
如果在xml使用當前DTD約束,必須包括DOCTYPE。格式如下:
#PCDATA為文本
一般dtd約束給定之後,我們根據這個dtd寫xml文件,一般不唯一,因為有些東西可以寫一個,也可以寫多個,但基本上按照它的約束可以寫出一個基本需要的xml文件
我們在引入dtd文檔之後,在eclipse中寫相應的xml文檔會方便很多,原因就是它會給提示
下面按照dtd約束寫xml,標籤寫一次或或多次的就寫一次,這樣演示翻遍
"1.0" encoding="UTF-8"?>
根據這個dtd寫出來的xml就是servlet中常用的xml文件
Xml Schema是xml語言,是一種用於定義和描述xml文檔結構與內容的模式語言,其出現是為了克服DTD的侷限性
一個 xml Schema文檔通常稱之為模式文檔(約束文檔),遵循這個文檔書寫的xml文件稱之為實例文檔
和xml文件一樣,一個xml Schema文檔必須有一個根節點為Schema
如果一個xml文檔中使用多個Schema文件,但當多個文件有同名的元素的時候就會發生衝突,所以命名空間可以理解為包,這樣相同的名稱的元素也不會發生問題
以後只要時""
可以理解為類似導入包一個意思,導入包之後就可以用包中的內容了
上面使用dtd寫了一個約束文件,約束的內容是servlet的配置文件,下面的xsd也是約束servlet的文件
web-app_2_5.xsd
"http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/web-app_2_5"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:tns="http://www.example.org/web-app_2_5"
elementFormDefault="qualified">
"web-app">
"0" maxOccurs="unbounded">
"servlet">
"servlet-name">
"servlet-class">
"servlet-mapping">
"servlet-name">
"url-pattern" maxOccurs="unbounded">
"welcome-file-list">
"welcome-file" maxOccurs="unbounded">
"version" type="double" use="optional">
這個是schema的形式的servlet的約束文檔,要想使用需要需要在xml文件中引入
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.org/web-app_2_5 web-app_2_5.xsd"
version="2.5">
按照它的要求編寫完成是這樣的
Xsd文件中
xsd:element表示元素,按照這個約束寫一般就只寫這些元素,寫的時候一般都有提示
xml解析
Xml dom和html dom差不多,xml dom將整個xml文檔加載到內存,生成一個DOM樹,並獲得一個Document對象,並通過Document對象就可以對DOM進行操作
DoM的核心概念就是節點,在xml文檔中元素,屬性,文本等都是dom節點
這個文檔都對應的dom樹是
Dom4j必須使用核心類SaxReader加載xml獲得document,並通過document獲得根元素,然後通過下面的api來獲取相應的元素
元素對象.attribute("屬性名")獲得指定屬性名的屬性對象.getValue();獲得這個屬性的值
或者直接 元素對象.attributeValue("屬性名")
舉例:
注意路徑cn.huanfeng.xml,應該寫成cn/huanfeng/xml,不宜該再寫點了,為包路徑
閱讀更多 幻風的編程日記 的文章