三分钟带你入门:XML

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();

两个鬼故事起名字姓黎房产投资易奇八字起名新军阀1909父母姓氏起名女人起名带水木加多宝与王老吉起名英文名字是什么婴幼儿五行起名我真不想躺赢打造超玄幻新年英语祝福语fm2012球探工具男孩缺土缺金起名噱头是什么意思选票模板rng战队是哪个国家的魔法科高校的劣等生小说长春市交通图如何查询自己公司起名paulboche倚天屠龙记之圣火令梵文翻译手机起名大全软件免费版千山暮雪小说青梅竹马是消防员未增删带燕字起名fullfiveqq头像女生带字网红自拍馆起名少年生前被连续抽血16次?多部门介入两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”淀粉肠小王子日销售额涨超10倍高中生被打伤下体休学 邯郸通报单亲妈妈陷入热恋 14岁儿子报警何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言张家界的山上“长”满了韩国人?男孩8年未见母亲被告知被遗忘中国拥有亿元资产的家庭达13.3万户19岁小伙救下5人后溺亡 多方发声315晚会后胖东来又人满为患了张立群任西安交通大学校长“重生之我在北大当嫡校长”男子被猫抓伤后确诊“猫抓病”测试车高速逃费 小米:已补缴周杰伦一审败诉网易网友洛杉矶偶遇贾玲今日春分倪萍分享减重40斤方法七年后宇文玥被薅头发捞上岸许家印被限制高消费萧美琴窜访捷克 外交部回应联合利华开始重组专访95后高颜值猪保姆胖东来员工每周单休无小长假男子被流浪猫绊倒 投喂者赔24万小米汽车超级工厂正式揭幕黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发当地回应沈阳致3死车祸车主疑毒驾恒大被罚41.75亿到底怎么缴妈妈回应孩子在校撞护栏坠楼外国人感慨凌晨的中国很安全杨倩无缘巴黎奥运校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变王树国卸任西安交大校长 师生送别手机成瘾是影响睡眠质量重要因素国产伟哥去年销售近13亿阿根廷将发行1万与2万面值的纸币兔狲“狲大娘”因病死亡遭遇山火的松茸之乡“开封王婆”爆火:促成四五十对奥巴马现身唐宁街 黑色着装引猜测考生莫言也上北大硕士复试名单了德国打算提及普京时仅用姓名天水麻辣烫把捣辣椒大爷累坏了

两个鬼故事 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化