首页 > 其他分享 >XML的简单认识

XML的简单认识

时间:2022-11-30 12:14:33浏览次数:161  
标签:XML xml 配置文件 认识 标签 约束 文档 简单

一、初识XML

1.1 XML和HTML的对比

1.1.1 用途方面

XML主要用于数据存储、传输、配置文件;HTML主要用于页面展示。
(一开始XML想替换HTML,后来失败了就转数据存储应用了。)

1.1.2 标签扩展性方面

Extensible Markup Language:可扩展标记语言

  • XML可扩展:标签不用提前定义,可以自行定义,只要符合规范即可
  • HTML不可扩展:标签都是定义好的

1.2 HTML和XML的关系?

HTML和XML都是w3c公司的产品。

  • w3c:万维网联盟,制定各种网络标准,比如js、html、css都是他们制定的。
  • html先出现在市场,但是各个厂商版本的浏览器为了展示自己功能的强大,有些就不遵循html的标准,当然也能实现页面的正常展示。例子如下:
<html>
	<head></head>
	<body>
		<font color="red">这是font</font>
	</body>
</html>
<font color="red">这是font</font>

上述二者皆可正常展示。
XML语法非常严格,必须遵循规范,否则解析不出来。结果发现没人用,因为习惯用HTML,二者语法功能也一样,相比XML语法更严格,所以就没人用。XML退出幕后,常用于数据存储,在java中用作配置文件也比较多。
Java中properties 配置文件举例:
.properties(扁平)
姓名:张三
年龄:18
性别:男
Xml配置文件有层次,所以用作配置文件很合适
<人>
<姓名>张三</姓名>
……
</人>

二、XML的作用

2.1 存储(数据库)

<students>
	<student>
		<name>as</name>
		<age>12</age>
	</student>
	<student>
		<name>as</name>
		<age>12</age>
	</student>
	<student>
		<name>as</name>
		<age>12</age>
	</student>
</students>

利用XML解析工具可以对上面的文件进行增删改查的操作

2.2 数据传输

XML可以作为两个系统之间传输信息的载体
一个由C语言写的系统,一个由Java语言写的系统,二者之间进行数据交流需要双方都认可的数据格式才行,这种需要提前约定好XML格式。不同系统之间怎么约定XML的数据格式?可以用xml的约束来规定,约束需要提前约定,具体约束方式后面会有。

2.3 配置文件

所有的应用几乎都有配置文件,配置文件是用来定义应用的一些属性信息的。例如qq、微信,应用的打开界面和尺寸都是提前规定好的,可以把这些信息写在程序中(把程序写死了,程序和配置耦合到一起了),也可以把这些配置信息写在配置文件中,在启动程序的时候读取这些配置文件即可(程序和配置分开了,程序变得更灵活)。

<config>
	<color>red</color>
</config>

三、xml文件的书写要求

1、 xml的文件后缀是.xml

2、 xml的第一行必须定义为文档声明

3、 xml文档中有且仅有一个根标签

4、 属性值必须使用引号(单双都行)引起来

5、 标签必须正确关闭

6、 xml的标签名称区分大小写

<?xml version="1.0"?>
<students>
	<student>
		<name>as</name>
		<age>18</age>
		<gender value="female"/>
		<sex>female</sex>
	</student>
</students>

四、xml的组成部分

4.1 文档声明

格式:
属性列表:
version:版本号,必须的属性,只有两个1.0或者1.1,1.1版本不兼容1.0的,所以用的很少。
encoding:默认是iso-8859-1,告诉浏览器以这个编码去解析,但是这个编码不包含中文。注意:这个地方的值要和存储文件的时候的编码值保持一致。
Standalone:是否独立。值:yes或no,就是说当前文件是否需要依赖外部文件。经过实践发现,无论什么值,都可依赖外部文件,写不写都没用。

4.2 指令

控制xml去做什么事情,(了解,用的很少)
例如:指挥浏览器怎么解析当前xml文件:

添加样式,实际上用的很少。

当前路径提前建立sytle.css样式文件
name{
color:red;
}

4.3 标签

标签名称自定义
规则:

  • 名称可以包含字母、数字以及其他的字符
  • 名称不能以数字或者标点符号开始
  • 名称不能以字母xml(或者XML、Xml等等)开始
  • 名称不能包含空格

4.4 属性

id属性值唯一,id是唯一标识值

4.5文本

CDATA区:在该区域中的数据会被原样展示
	格式:  <![CDATA[ 数据 ]]>
		 <![CDATA[内容]]>

image

五、Xml的DTD约束和Schema约束

5.1 什么是约束

规定xml文档的书写规则。

5.2 为什么xml需要约束

举例:A系统用c语言写的,B系统用java语言写的,系统之间进行数据交流,就可以用xml进行交流,但是不能随意定义标签,需要提前规定xml的数据样式和数据规则,标签代表什么含义等。

<content>
	<message>你好</message>
	<data>today</data>
</content>

5.3 约束的种类

  • DTD:一种简单的约束技术(Document Type Definition),比较简单。
  • Schema(大纲):一种复杂的约束技术。
    约束在开发中的应用场景:
    框架(booststrap)(半成品的软件/项目)+需要很多的配置(xml文件)+由开发者进行配置,配置文件不能乱配置,要按照框架给出的约束去配置。

5.3.1 XML的DTD约束

DTD的三种引入方式:

  • 内部dtd:将约束规则定义在xml文档中
  • 本地dtd:
  • 网络dtd:

方式一:内部dtd
image

方式二:本地dtd
image

image

方式三:网络dtd
image

5.3.2 XML的schema约束

Schema约束文件的后缀名是xsd,本质上还是个xml文件。

XSD内部文件的格式:
image

XML约束文件的引用格式:
image

六、XML文件的解析

6.1 什么叫xml的解析

指的就是操作XML文档,将文档中的数据读取到内存中,或者是把内存中的数据写到xml文件中去。

  • 解析(读取):将文档中的数据读取到内存中
  • 将内存中的数据保存到xml文档中,持久化的存储

6.2 解析xml的两种思想

6.2.1 DOM(Document Object Model)

将标记语言文档一次性加载进内存,在内存中形成一颗dom树。
image

  • 优点:操作方便,可以对文档进行CURD的所有操作
  • 缺点:占内存

6.2.2 SAM(Simple API for XML)

SAM:逐行读取,基于事件驱动的。
逐行读取(逐个元素读取):读到下一行的内容的时候,把上一行的内容丢掉,在内存中永远只有一行数据。
事件驱动:读到根标签要作什么,读到属性节点要做什么,读到文本标签要做什么,读到结束标签要做什么,代码要自己写,所以比较复杂。

  • 优点:不占内存
  • 缺点:只能读取,不能增删改

6.3 Xml常见的解析器

  • JAXP:sun公司提供的解析器,支持dom和sam两种思想。不需要导入第三方jar包,因为JAXP就是sun公司的产品,已经在jdk中了。但是没人用,因为效率低。
  • DOM4J:一款非常优秀的解析器(dom+sam),市面上用的也比较多。
  • Jsoup:简单高效,jsoup是一款JAVA的HTML解析器,可直接解析某个URL地址,HTML文本内容。它提供了一套非常省力的API,可通过DOM,css以及类似jQuery的操作方法来取出和操作数据。
  • PULL:Android操作系统内置的解析器,sam方式的。手机内存小,所以就是sam方式,但是在服务器端一般就采用dom解析方式。

参考:https://www.bilibili.com/video/BV11u411i7hM/?spm_id_from=333.999.0.0&vd_source=d6067928eb906629adf6cc260761df74

标签:XML,xml,配置文件,认识,标签,约束,文档,简单
From: https://www.cnblogs.com/edkong/p/16938016.html

相关文章

  • Linux- Nginx简单的负载均衡(一)
    这里先进行简单的nginx负载,安装nginx这里就不多说了,我们情景假设在已经安装好了nginx上:1)查询nginx中的upstrea负载均衡模块 默认是有安装的。进入nginx源码目录中./config......
  • Java学习笔记XML(3)
    XML简介XML即可扩展的标记语言。因此该语言中所有的标签都是没有预先定义的,开发者可以自己随意的指定。目前为止所有的标记的语言都属于开源的语言。由W3C组织进行一个基本......
  • php中的XML DOM(10)
    1.PHPDOM(1)Php中的DOM跟javascript不一样,属性不用另外增加一个节点2.主要类    DOMDocument:文档类    DOMNodeList:节点列表类    DOMNode:节点类   ......
  • 2022最简单易懂的IOS App打包发布完整流程
     创建appid标识符进入apple开发者中心点击Account 点击Certificates,Identifiers&Profiles,创建AppIDS标识符,点击左侧菜单栏Identifiers,再点击+按钮......
  • Android Studio 简单介绍和使用问题小结
    AndroidStudio简单介绍和使用问题小结  Google在2013的I/O开发者大会上引入的该开发工具。现在已经更新到了0.5.8版本。现在github的很多项目都使用了AndroidStudio开......
  • python编辑excel表格文件的简单方法练习
    一、创建一个Excel文件fromopenpyxlimportWorkbook#需要用到openpyxl模块来操作Excel文件。openpyxl需要先安装。#实例化对象wb=Workbook()#获取当前active的shee......
  • 简单列单词
    描述如果你计划读一本英语小说,可能你需要做一些提前准备,例如列出书中“常见的生词”。也许在以前,这是一件不可能的事。因为你既然没读过这本书,又怎么知道哪些是常见的......
  • XML 与ABAP对象转换
    sap与外部系统通过接口交互时,数据的传递通常有XML,JSON等格式,此处介绍XML与ABAP结构、内表互转的两种常用方法。A.一种是通过类cl_xml_document解析转换XML字符串,该方式......
  • XML展示
       DATA: lr_xml TYPE REF TO cl_xml_document.  DATA: lv_rc TYPE int4.   CREATE OBJECT lr_xml.  CALL METHOD lr_xml->parse_xstring  ......
  • DelayQueue的简单介绍
    DelayQueue按照延迟时间从小到大出队列的队列,延迟时间表示的是未来将要执行的时间减去当前的时间,对于加入DelayQueue的元素,需要实现Delayed接口  当getDelay()的返回......