今日內(nèi)容

1. XML 1. 概念 2. 語(yǔ)法 3. 解析
1
2
3
4
XML:
1. 概念:Extensible Markup Language 可擴(kuò)展標(biāo)記語(yǔ)言 * 可擴(kuò)展:標(biāo)簽都是自定義的。 * 功能 * 存儲(chǔ)數(shù)據(jù) 1. 配置文件 2. 在網(wǎng)絡(luò)中傳輸 * xml與html的區(qū)別 1. xml標(biāo)簽都是自定義的,html標(biāo)簽是預(yù)定義。 2. xml的語(yǔ)法嚴(yán)格,html語(yǔ)法松散 3. xml是存儲(chǔ)數(shù)據(jù)的,html是展示數(shù)據(jù) * w3c:萬(wàn)維網(wǎng)聯(lián)盟 2. 語(yǔ)法: * 基本語(yǔ)法: 1. xml文檔的后綴名 .xml 2. xml第一行必須定義為文檔聲明 3. xml文檔中有且僅有一個(gè)根標(biāo)簽 4. 屬性值必須使用引號(hào)(單雙都可)引起來(lái) 5. 標(biāo)簽必須正確關(guān)閉 6. xml標(biāo)簽名稱(chēng)區(qū)分大小寫(xiě) * 快速入門(mén): zhangsan 23 male
lisi 24 female * 組成部分: 1. 文檔聲明 1. 格式: 2. 屬性列表: * version:版本號(hào),必須的屬性 * encoding:編碼方式。告知解析引擎當(dāng)前文檔使用的字符集,默認(rèn)值:ISO-8859-1 * standalone:是否獨(dú)立 * 取值: * yes:不依賴(lài)其他文件 * no:依賴(lài)其他文件 2. 指令(了解):結(jié)合css的 * 3. 標(biāo)簽:標(biāo)簽名稱(chēng)自定義的 * 規(guī)則: * 名稱(chēng)可以包含字母、數(shù)字以及其他的字符 * 名稱(chēng)不能以數(shù)字或者標(biāo)點(diǎn)符號(hào)開(kāi)始 * 名稱(chēng)不能以字母 xml(或者 XML、Xml 等等)開(kāi)始 * 名稱(chēng)不能包含空格 4. 屬性: id屬性值唯一 5. 文本: * CDATA區(qū):在該區(qū)域中的數(shù)據(jù)會(huì)被原樣展示 * 格式: * 約束:規(guī)定xml文檔的書(shū)寫(xiě)規(guī)則 * 作為框架的使用者(程序員): 1. 能夠在xml中引入約束文檔 2. 能夠簡(jiǎn)單的讀懂約束文檔 * 分類(lèi): 1. DTD:一種簡(jiǎn)單的約束技術(shù) 2. Schema:一種復(fù)雜的約束技術(shù) * DTD: * 引入dtd文檔到xml文檔中 * 內(nèi)部dtd:將約束規(guī)則定義在xml文檔中 * 外部dtd:將約束的規(guī)則定義在外部的dtd文件中 * 本地: * 網(wǎng)絡(luò): * Schema: * 引入: 1.填寫(xiě)xml文檔的根元素 2.引入xsi前綴. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3.引入xsd文件命名空間. xsi:schemaLocation="http://www.itcast.cn/xml student.xsd" 4.為每一個(gè)xsd約束聲明一個(gè)前綴,作為標(biāo)識(shí) xmlns="http://www.itcast.cn/xml" 3. 解析:操作xml文檔,將文檔中的數(shù)據(jù)讀取到內(nèi)存中 * 操作xml文檔 1. 解析(讀取):將文檔中的數(shù)據(jù)讀取到內(nèi)存中 2. 寫(xiě)入:將內(nèi)存中的數(shù)據(jù)保存到xml文檔中。持久化的存儲(chǔ) * 解析xml的方式: 1. DOM:將標(biāo)記語(yǔ)言文檔一次性加載進(jìn)內(nèi)存,在內(nèi)存中形成一顆dom樹(shù) * 優(yōu)點(diǎn):操作方便,可以對(duì)文檔進(jìn)行CRUD的所有操作 * 缺點(diǎn):占內(nèi)存 2. SAX:逐行讀取,基于事件驅(qū)動(dòng)的。 * 優(yōu)點(diǎn):不占內(nèi)存。 * 缺點(diǎn):只能讀取,不能增刪改 * xml常見(jiàn)的解析器: 1. JAXP:sun公司提供的解析器,支持dom和sax兩種思想 2. DOM4J:一款非常優(yōu)秀的解析器 3. Jsoup:jsoup 是一款Java 的HTML解析器,可直接解析某個(gè)URL地址、HTML文本內(nèi)容。它提供了一套非常省力的API,可通過(guò)DOM,CSS以及類(lèi)似于jQuery的操作方法來(lái)取出和操作數(shù)據(jù)。 4. PULL:Android操作系統(tǒng)內(nèi)置的解析器,sax方式的。 * Jsoup:jsoup 是一款Java 的HTML解析器,可直接解析某個(gè)URL地址、HTML文本內(nèi)容。它提供了一套非常省力的API,可通過(guò)DOM,CSS以及類(lèi)似于jQuery的操作方法來(lái)取出和操作數(shù)據(jù)。 * 快速入門(mén): * 步驟: 1. 導(dǎo)入jar包 2. 獲取Document對(duì)象 3. 獲取對(duì)應(yīng)的標(biāo)簽Element對(duì)象 4. 獲取數(shù)據(jù) * 代碼: //2.1獲取student.xml的path String path = JsoupDemo1.class.getClassLoader().getResource("student.xml").getPath(); //2.2解析xml文檔,加載文檔進(jìn)內(nèi)存,獲取dom樹(shù)--->Document Document document = Jsoup.parse(new File(path), "utf-8"); //3.獲取元素對(duì)象 Element Elements elements = document.getElementsByTag("name"); System.out.println(elements.size()); //3.1獲取第一個(gè)name的Element對(duì)象 Element element = elements.get(0); //3.2獲取數(shù)據(jù) String name = element.text(); System.out.println(name); * 對(duì)象的使用: 1. Jsoup:工具類(lèi),可以解析html或xml文檔,返回Document * parse:解析html或xml文檔,返回Document * parse (File in, String charsetName):解析xml或html文件的。 * parse (String html):解析xml或html字符串 * parse (URL url, int timeoutMillis):通過(guò)網(wǎng)絡(luò)路徑獲取指定的html或xml的文檔對(duì)象 2. Document:文檔對(duì)象。代表內(nèi)存中的dom樹(shù) * 獲取Element對(duì)象 * getElementById (String id):根據(jù)id屬性值獲取唯一的element對(duì)象 * getElementsByTag (String tagName):根據(jù)標(biāo)簽名稱(chēng)獲取元素對(duì)象集合 * getElementsByAttribute (String key):根據(jù)屬性名稱(chēng)獲取元素對(duì)象集合 * getElementsByAttributeValue (String key, String value):根據(jù)對(duì)應(yīng)的屬性名和屬性值獲取元素對(duì)象集合 3. Elements:元素Element對(duì)象的集合。可以當(dāng)做 ArrayList來(lái)使用 4. Element:元素對(duì)象 1. 獲取子元素對(duì)象 * getElementById (String id):根據(jù)id屬性值獲取唯一的element對(duì)象 * getElementsByTag (String tagName):根據(jù)標(biāo)簽名稱(chēng)獲取元素對(duì)象集合 * getElementsByAttribute (String key):根據(jù)屬性名稱(chēng)獲取元素對(duì)象集合 * getElementsByAttributeValue (String key, String value):根據(jù)對(duì)應(yīng)的屬性名和屬性值獲取元素對(duì)象集合 2. 獲取屬性值 * String attr(String key):根據(jù)屬性名稱(chēng)獲取屬性值 3. 獲取文本內(nèi)容 * String text():獲取文本內(nèi)容 * String html():獲取標(biāo)簽體的所有內(nèi)容(包括字標(biāo)簽的字符串內(nèi)容) 5. Node:節(jié)點(diǎn)對(duì)象 * 是Document和Element的父類(lèi) * 快捷查詢(xún)方式: 1. selector:選擇器 * 使用的方法:Elements select (String cssQuery) * 語(yǔ)法:參考Selector類(lèi)中定義的語(yǔ)法 2. XPath:XPath即為XML路徑語(yǔ)言,它是一種用來(lái)確定XML(標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言的子集)文檔中某部分位置的語(yǔ)言 * 使用Jsoup的Xpath需要額外導(dǎo)入jar包。 * 查詢(xún)w3cshool參考手冊(cè),使用xpath的語(yǔ)法完成查詢(xún) * 代碼: //1.獲取student.xml的path String path = JsoupDemo6.class.getClassLoader().getResource("student.xml").getPath(); //2.獲取Document對(duì)象 Document document = Jsoup.parse(new File(path), "utf-8"); //3.根據(jù)document對(duì)象,創(chuàng)建JXDocument對(duì)象 JXDocument jxDocument = new JXDocument(document); //4.結(jié)合x(chóng)path語(yǔ)法查詢(xún) //4.1查詢(xún)所有student標(biāo)簽 List jxNodes = jxDocument.selN("http://student"); for (JXNode jxNode : jxNodes) { System.out.println(jxNode); } System.out.println("--------------------"); //4.2查詢(xún)所有student標(biāo)簽下的name標(biāo)簽 List jxNodes2 = jxDocument.selN("http://student/name"); for (JXNode jxNode : jxNodes2) { System.out.println(jxNode); } System.out.println("--------------------"); //4.3查詢(xún)student標(biāo)簽下帶有id屬性的name標(biāo)簽 List jxNodes3 = jxDocument.selN("http://student/name[@id]"); for (JXNode jxNode : jxNodes3) { System.out.println(jxNode); } System.out.println("--------------------"); //4.4查詢(xún)student標(biāo)簽下帶有id屬性的name標(biāo)簽 并且id屬性值為itcast List jxNodes4 = jxDocument.selN("http://student/name[@id='itcast']"); for (JXNode jxNode : jxNodes4) { System.out.println(jxNode); }
1
2
3

4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
Java XML
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶(hù)投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶(hù)投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。