1
- ## 一、XML简介
1
+ [ TOC]
2
+
3
+
4
+
5
+ # 一、XML简介
6
+
2
7
1、XML是可扩展标记语言
3
8
2、与操作系统和操作平台均无关
4
9
3、规范统一,支持异构系统
5
10
![ 在这里插入图片描述] ( https://img-blog.csdnimg.cn/20181101180436240.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMjcwMDc0,size_16,color_FFFFFF,t_70 )
6
- ## 二、XML文档结构
11
+
12
+ # 二、XML文档结构
7
13
![ 在这里插入图片描述] ( https://img-blog.csdnimg.cn/20181101180551962.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMjcwMDc0,size_16,color_FFFFFF,t_70 )
8
14
9
- 1、XML声明
15
+ ## 1、XML声明
16
+
10
17
<? xml version="1.0" encoding="UTF-8" ?>
11
18
<font color =red >
12
19
注意:这里需要修改的encoding,如果出现乱码,需要改成GBK
13
20
<font />
14
21
15
- 2、标签
22
+ ## 2、标签
23
+
16
24
元素名 元素属性名=“属性值” 元素内容
17
25
![ 在这里插入图片描述] ( https://img-blog.csdnimg.cn/2018110118223759.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMjcwMDc0,size_16,color_FFFFFF,t_70 )
18
26
19
- 3、根元素
27
+ ## 3、根元素
28
+
20
29
写在声明下面的标签元素,有且只有一个根元素
21
- 4、属性
30
+
31
+ ## 4、属性
32
+
22
33
一个元素可以有多个属性,多个属性之间用空格分开
23
34
<font color =red size =5 >
24
35
注意:属性可以加在任何一个元素的其实标签上,但不能加在结束标签上,且不能包含特殊字符< " .&
25
36
<font />
26
37
27
- 5、特殊字符的处理
38
+ ## 5、特殊字符的处理
39
+
28
40
![ 在这里插入图片描述] ( https://img-blog.csdnimg.cn/20181101182809133.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMjcwMDc0,size_16,color_FFFFFF,t_70 )
29
41
30
- ## 四 、XML编写注意事项
42
+ # 三 、XML编写注意事项
31
43
![ 在这里插入图片描述] ( https://img-blog.csdnimg.cn/20181101182921224.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMjcwMDc0,size_16,color_FFFFFF,t_70 )
32
44
33
- ## 五 、XML命名空间
45
+ # 四 、XML命名空间
34
46
命名空间是在解析XML文档时,对于重名的元素,可能出现解析冲突,他们用来标识来自特定域(标准组织、公司、行业)的名称
35
47
除非带有前缀,否则属性属于他们的元素所在的命名空间
36
- ## 六 、验证XML文档
48
+ # 五 、验证XML文档
37
49
DTD验证
38
- ## 七、DOM解析XML
39
- 1、步骤
50
+ # 六、DOM解析XML
51
+ ## 1、步骤
52
+
40
53
<font color =Gold size =4 >
41
- (1)创建解析器工厂
54
+
55
+ ### (1)创建解析器工厂
42
56
43
57
``` java
44
58
DocumentBuilderFactory factory = DocumentBuilderFactory . newInstance();
45
59
```
46
60
<font />
47
61
48
62
<font color =Gold size =4 >
49
- (2)创建解析器
63
+
64
+ ### (2)创建解析器
50
65
51
66
``` java
52
67
DocumentBuilder builder = factory. newDocumentBuilder();
53
68
```
54
69
<font />
55
70
56
71
<font color =Gold size =4 >
57
- (3)获得Document
72
+
73
+ ### (3)获得Document
58
74
59
75
``` java
60
76
document= builder. parse(" src/info.xml" );
61
77
```
62
78
<font />
63
79
64
80
<font color =Gold size =4 >
65
- (4)创建解析器工厂
81
+
82
+ ### (4)创建解析器工厂
66
83
67
84
<font />
68
85
69
86
以Document对象为起点对DOM树的节点进行增加、删除、修改查询等操作
70
87
71
- 2、关键代码(包含增删该查操作)
88
+ ## 2、关键代码(包含增删该查操作)
72
89
73
90
``` java
74
91
package demo1 ;
@@ -210,7 +227,8 @@ public class Test1 {
210
227
}
211
228
212
229
```
213
- 3、注意区别这几个关键词
230
+ ## 3、注意区别这几个关键词
231
+
214
232
<font color =red size =5 >
215
233
Document:
216
234
<font />
@@ -237,4 +255,77 @@ item
237
255
238
256
从NodeList中获得Node,要通过循环遍历
239
257
258
+ # 七、dom4j
259
+
260
+ ## 1、方法:
261
+
262
+ 百度dom4j,看官方帮助文档,里面会有一系列的方法。
263
+
264
+ ![ 1541405704330] ( C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1541405704330.png )
265
+
266
+ ## 2、显示xml信息
267
+
268
+ ``` java
269
+ public class Test1 {
270
+ public static void main (String [] args ) throws Exception {
271
+ // 获取domcument对象
272
+ SAXReader reader = new SAXReader ();
273
+ Document doc = reader. read(" src//info.xml" );
274
+
275
+ // 获取根元素
276
+ Element root = doc. getRootElement();
277
+
278
+ // 循环遍历输出子节点
279
+ Iterator<Element > it= root. elementIterator();
280
+ while (it. hasNext()) {
281
+ Element brandEle = it. next();
282
+ String strBrand= brandEle. attributeValue(" name" );
283
+ Iterator<Element > it2= brandEle. elementIterator();
284
+ while (it2. hasNext()){
285
+ Element typeEle= it2. next();
286
+ String strType= typeEle. attributeValue(" name" );
287
+ System . out. println(" 品牌:" + strBrand+ " \t " + " 型号:" + strType);
288
+ }
289
+ }
290
+ }
291
+
292
+ }
293
+ ```
294
+
295
+ ## 3、保存xml文件
296
+
297
+ ``` java
298
+ // 保存
299
+ OutputFormat format = OutputFormat . createPrettyPrint();
300
+ XMLWriter writer = new XMLWriter (new FileWriter (" src//info.xml" ),format);
301
+ writer. write( doc );
302
+ writer. close();
303
+ ```
304
+
305
+ ## 4、添加信息
306
+
307
+ ``` java
308
+ // 添加
309
+ Element eleBrand = root. addElement(" Brand" );
310
+ eleBrand. addAttribute(" name" , " 小米" );
311
+ eleBrand. addText(" 这是小米手机" );
312
+ ```
313
+
314
+ ## 5、修改&删除
315
+
316
+ ``` java
317
+ // 修改
318
+ Iterator<Element > it = root. elementIterator();
319
+ while (it. hasNext()) {
320
+ Element brandEle = it. next();
321
+ Attribute att = brandEle. attribute(" name" );
322
+ if (att. getValue(). equals(" 三星" )) {
323
+ // 修改
324
+ // att.setValue("sanxing");
325
+ // 删除属性对象(包括属性名和属性值)
326
+ // brandEle.remove(att);
327
+ // 删除整个brand三星
328
+ brandEle. getParent(). remove(brandEle);
329
+ }
330
+ ```
240
331
0 commit comments