JAVA中XML讲解(应用案例)

网友投稿 677 2022-05-29

文章目录

一.XML文件的概述

(1)什么是XML

(2)XML 与 HTML 的主要差异

(3)XML语法

(4)XML 命名规则

(5)XML作用

(6)XML基本结构

二.XML解析

(1)解析方式

(2)DOM4J相关类

一.XML文件的概述

(1)什么是XML

XML 指可扩展标记语言 所谓的可扩展标记语言,简单说就是指xml文件中的标签可以任意

定义。

XML 指可扩展标记语言(EXtensible Markup Language)

XML 是一种标记语言,很类似 HTML

XML 的设计宗旨是传输数据,而非显示数据

XML 标签没有被预定义。您需要自行定义标签。

XML 被设计为具有自我描述性。

XML 是 W3C 的推荐标准

(2)XML 与 HTML 的主要差异

XML 不是 HTML 的替代。

XML 和 HTML 为不同的目的而设计:

XML 被设计为传输和存储数据,其焦点是数据的内容。

HTML 被设计用来显示数据,其焦点是数据的外观。

HTML 旨在显示信息,而 XML 旨在传输信息。

(3)XML语法

XML 标签对大小写敏感

XML 元素都须有关闭标签

XML 文档必须有根元素

XML 的属性值须加引号

(4)XML 命名规则

XML 元素必须遵循以下命名规则:

名称可以含字母、数字以及其他的字符

名称不能以数字或者标点符号开始

名称不能以字符 “xml”(或者 XML、Xml)开始

名称不能包含空格

(5)XML作用

XML用来在程序间传输数据

XML可用来存储数据(框架的配置信息)

(6)XML基本结构

文档版本声明及编码

1

树形结构:所有标签必须包含在一对根标签中

整个文档是一个document对象

节点

①文档中的某个标签及其包含的内容称为一个节点(标签节点 element)

②标签的某个属性也是一个节点(属性节点 attribute)

③文档中的一个文本也是一个节点(文本节点 Text)

二.XML解析

(1)解析方式

所谓的xml解析就是对xml文件进行读写操作。

Xml解析方式分为两种:

①dom方式(document object model)

即文档对象模型,它是w3c组织推荐的解析xml的一种方式。

②sax方式(simple api for xml)

不是官方标准,它是xml 社区事实上的标准,几乎所有的xml解析器都支持它

dom与sax解析方式,它只一种理论,没有具体API.

dom与sax解析方式区别

dom:

dom解析方式它是将整个xml文件载入内存,以树型结构来存储

dom支持回写 可以对xml文件中内容进行crud操作

如果文件内容比较大,不建议使用dom解析。

Sax

相比dom,sax是一种更为轻量级解决方案

采用串行读取方式,逐行读取,读取一行解析一行。

编程比较复杂

sax只能读取,不能对xml进行修改。

第三方xml解析包

Jaxp(sun标准)

Jdom:专注于写操作(Java对象–>XML文档)

Dom4j:专注于读操作(XML文档–>Java对象)

旺财 哈士奇 豆豆 中华田园犬 花花 藏獒

1

2

3

4

5

6

7

JAVA中XML讲解(应用案例)

8

9

10

11

12

13

14

15

根据xml文件创建对应的类

public class Dog { private int id; private String name; private String type; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getType() { return type; } public void setType(String type) { this.type = type; } @Override public String toString() { return "Dog{" + "id=" + id + ", name='" + name + '\'' + ", type='" + type + '\'' + '}'; } }

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

SAXReader Dom4J的读取文件的类

代码实现xml解析

public class Dom4j_Case { public static void main(String[] args) throws Exception { //创建xml读取对象 SAXReader reader=new SAXReader(); //读取要解析的xml文件 Document document=reader.read(new FileInputStream("xml/dogs.xml")); //获取根节点 Element root=document.getRootElement(); //获取所有的直接子标签 List elements = root.elements(); List dogs=new ArrayList<>(); //遍历 for(Element element:elements) { Dog dog=new Dog(); //获取指定属性名称的值 dog.setId(Integer.parseInt(element.attribute("id").getText())); //获取指定元素的值 dog.setName(element.elementText("name")); dog.setType(element.elementText("type")); //添加到集合 dogs.add(dog); } //输出 System.out.println(dogs); } }

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

(2)DOM4J相关类

SAXReader 此类用于加载XML文档

构造器:无参构造器

方法: public Document read( String/File…);

SAXReader reader = new SAXReader(); Document doc = reader.read(xmlFileName);

1

2

Document接口

获取根元素: public Element getRootElement();

//通过Document对象调用getRootElement方法获取根元素 Element root = doc.getRootElement();

1

2

Element接口:表示xml文档中的某个元素

//1.获取当前元素的所有属性 List attrs = e.attributes(); //2.根据属性名获取属性值 String attrValue = e.attributeValue(String attrName); //3.获取当前元素的所有子元素 List childElements = e.elements(); //4.获取当前元素下指定标签名的子元素 List childElements = e.elements(String tagName);

1

2

3

4

5

6

7

8

Attribute接口:表示xml文件中元素的属性

attr.getName();

attr.getValue();

List attrs = root.attributes(); for (int i = 0; i < attrs.size(); i++) { Attribute attr = attrs.get(i); //获取属性名 String attrName = attr.getName(); //获取属性值 String attrValue = attr.getValue(); System.out.println(attrName+"="+attrValue); }

1

2

3

4

5

6

7

8

9

The best investment is in yourself.

2020.03.20 来自辰兮的第33篇博客

Java XML

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:jQuery入门基础
下一篇:开发者的瑞士军刀Eolink,目测要火
相关文章