xml 名称中不能包含= 字符_三分钟带你入门:XML

eeb808e5ede52ca8b1effa9d2ff0f134.png

ee628745c858756ee6ce9509ae5ac412.png

827ae516c261354c932a508b2d40cffe.png

b64790845c5444627a7f9244c41b2fd2.png

ab71f5740a36a14f5be6589fffa6fb22.png

be29f72b9108a16812dd731e502a6825.png

0f76c9180b9014ab00d11fc092f6bd80.png

9898886d76e51aa9542727e6eacd6428.png

f8bcbe6b1372b1dacb146b09e7c84183.png

75006b794d097965269cd80dad11c02f.png

XML

一、 标记语言

1、超文本标记语言 HTML

(1)写法格式: <a href="link.html">link</a>

(2)关注数据的展示与用户体验

(3)标记是预定义、不可扩展的(如 <a></a>表示超链接)

2、可扩展的标记语言 XML

(1)写法格式:同 html 样式

(2)仅关注数据本身

(3)标记可扩展,可自定义

二、XML 作用

描述数据、存储数据、传输(交换)数据

XML 现在已经成为一种通用的

数据交换格式

1、存储、交换数据

XML 只用元素和属性来描述数据,而不提供数据的显示方法,这使得 XML 具有能够运

行于不同系统平台之间和转换成不同格式目标文件。 用 XML 在应用程序和公司之间

作数据交换,几个应用程序可以共享和解析同一个 XML 文件,不必使用传统的字符串

解析或拆解过程。

2、配置

许多应用都将配置数据存储在各种文件里,如 SSH、Android。使用 XML 配置文件的

应用程序能够方便地处理所需数据,不用像其它应用那样要经过重新编译才能修改和维

护应用系统。xml 比 数据库占用的资源少,操作方便,用来存储简单的信息

三、XML 示例

用 XML 存储已注册用户的数据方式

1、方式 1

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

<people>

<person>

<name>白晶晶</name>

<age>28</age>

</person>

<person>

<name>至尊宝</name>

<age>300</age>

</person>

</people>

2、方式 2

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

<people>

<person name="白晶晶" age="28"></person>

<person name="至尊宝" age="300"></person>

</people>

文档的后缀名是 xml,每个文档有且仅有一个根元素,所谓根元素就是包含了其他所有元

素的元素

XML 目前只有一个版本,即 1.0.XML

四、格式良好的 xml

1、语法规范:

1)、必须有 XML 文档声明:

<?xml version="1.0"?>

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

<?xml version="1.0" standalone="yes"?>

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

注意文本文件保存时候默认的编码格式是ANSI,需用记事本把它手动改为UTF-8保存。

2)、必须有且仅有一个根元素

3)、严格区分大小写

4)、属性值用引号(双引号或单引号) :等号分开的名称-值对;在一个元素上,相同的属

性只能出现一次

5)、标记成对;

6)、空标记关闭;

7)、元素正确嵌套。

2、元素命名规则

1)、名称中可以包含字母、数字或者其他可见字符;

2)、名称不能以数字开头;

3)、不能以 XML/xml/Xml…开头;

4)、名称中不能含空格;

5)、名称中不能含冒号(注:冒号留给命名空间使用)

3、实体

实体叫 ENTITY,实体的作用是避免重复输入。作用相当于宏或者变量。

1)内置的 5 种实体

实体 符号

&lt; <

&gt; >

&amp; &

&quot; "

&apos; '

2)自定义实体

<!DOCTYPE 根元素[

<!--实体声明(注释)-->

<!ENTITY 实体名 "实体内容">

]>

使用已定义的实体:&实体名;

<!--引用实体的方法-->

<teacher>

<name>&xm;</name>

<gender>&gen;</gender>

</teacher>

4、文档类型声明

文档类型定义——DOCTYPE,文档类型声明,紧跟 XML 声明之后,包含所有实体声明

五、组成

1、构成

元素

属性

实体

PCDATA

PCDATA 的意思是被解析的字符数据(parsed character data)。可把字符数据想象为 XML 元素的开始标签与结束标签之间的文本

CDATA

<![CDATA[ ...... ]]>

用于把整段文本解释为纯字符数据而不是标记的情况

CDATA 节(character data)

六、XML 解析(重点

DOM

文档树结构的解析

核心操作接口

Document

此接口代表了整个 XML 文档,表示的是整棵 DOM 树的根

Node

每一个 Node 接口代表了 DOM 树种的一个节点

NodeList

此接口表示的是一个节点的集合

NamedNodeMap

此接口表示的是一组节点和其唯一名字对应的一一对应关系

DOM 解析过程

① 建 立 DocumentBuilderFactory : DocumentBuilderFactory factory =

DocumentBuilderFactory.newInstance();

②建立 DocumentBuilder: DocumentBuilder builder = factory.newDocumentBuilder();

③建立 Document : Document doc = builder.parse(“要解析的文件路径”);

④建立 NodeList : NodeList nl = doc.getElementsByTagName(“读取节点”);

⑤进行 XML 信息读取

DOM 操作除了可以进行解析外,也可以进行文档的生成

如果想要生成 XML 文件,则在创建文档的时候,就应该使用 newDocument()方法

SAX

基于事件流的解析

SAX 解析

SAX(Simple API for XML)解析是按照 xml 文件的顺序一步一步的来解析

// 1、创建解析器工厂

SAXParserFactory factory = SAXParserFactory.newInstance();

// 2、获得解析器

SAXParser parser = factory.newSAXParser();

// SAX解析器 ,继承

DefaultHandlerString path = new File("resource/demo01.xml").getAbsolutePath();

// 解析

parser.parse(path, new MySaxHandler());

DOM4j 解析

dom4j 是一个简单的开源库,用于处理 XML、 XPath 和 XSLT,它基于 Java 平台,使

用 Java 的集合框架,全面集成了 DOM,SAX 和 JAXP

解析

File file = new File("resource/outputdom4j.xml");

SAXReader reader = new SAXReader();

// 读取文件作为文档

Document doc = reader.read(file);

// 获取文档的根元素

Element root = doc.getRootElement();

// 根据跟元素找到全部的子节点

Iterator<Element> iter = root.elementIterator();

while(iter.hasNext()){Element name = iter.next();

System.out.println("value = " + name.getText());}

创建

// 使用DocumentHelper来创建 Document对象

Document document = DocumentHelper.createDocument();

// 创建元素并设置关系

Element person = document.addElement("person");

Element name = person.addElement("name");

Element age = person.addElement("age");

// 设置文本

name.setText("shsxt");age.setText("10");

// 创建格式化输出器

OutputFormat of = OutputFormat.createPrettyPrint();

of.setEncoding("utf-8");

// 输出到文件

File file = new File("resource/outputdom4j.xml");

XMLWriter writer = new XMLWriter(new FileOutputStream(newFile(file.getAbsolutePath())),of);

// 写出

writer.write(document);

writer.flush();

writer.close();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值