可拓展标记语言-XML基础

XML可拓展标记语言

XML:可扩展标记语言(eXtensible Markup Language)

通常指字符串,而不是文件

.XML文件

.XML文件是保存XML数据的一种方式

XML数据也可以以其他的方式存在(如在内存中构建XML数据)

不要将XML语言狭隘的理解成XML文件


特性

  1. 具有平台无关性,是一门独立的标记语言(不依赖,单独存在也是有意义的)
    系统平台无关性:XML文件不论是在windows系统还是苹果系统打开,都是一样的
    语言平台无关性:不论由java还是python还是其他语言进行解析,看到的效果特性都是一样的,因此可以跨语言
  2. 具有自我描述性(自己描述自己)

作用

  1. 网络数据传输(一般用JSON)
    (有层次、很清晰地区分一段数据里的内容)
  2. 数据存储(基本不用)
    (重要数据实现互通,方便程序读取)
  3. 配置文件(用的最多)

语法

1、 文档声明

必须放在第一行

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

版本:1.0
编码:UTF-8


2、 描述内容(关键部分)

XML : 可扩展标记语言(eXtensible Markup Language)

描述的内容,即标记 ( 元素 / 标签 / 节点) ,标记之间允许重名

  • 元素:描述包含关系
  • 标签:语法
  • 节点:加载的时候通常以节点方式展开

XML文档,由一个个的标记组成

开始标记(开放标记): <标记名称>
结束标记(闭合标记): </标记名称>

  • 标记名称:(自定义名称,必须遵循以下命名规则)
    1.可以含字母、数字以及其他的字符
    2.不能以数字或者标点符号开始
    3.不能以字符 “xml”(或者 XML、Xml)开始
    4.不能包含空格,不能包含冒号(:)
    5.区分大小写
  • 标记内容:
    开始标记与结束标记之间
    例如,通过标记,描述一个name:<name>入错行的北北</name>

3、 标记嵌套

标记可以嵌套,但是不允许交叉

可以嵌套:

<person>
	<name>张三</name>
	<age>18</age>
</person>

不允许交叉(name和age):

<person>
	<name>张三<age></name>
	18</age>
</person>

4、 属性

标记除了开始和结束 , 还有属性

标记中的属性,在标记开始时 描述,由属性名和属性值组成

格式:

在开始标记中, 描述属性

可以包含0-n个属性, 每一个属性是一个键值对

属性名不允许重复 ,键与值之间使用等号连接,多个属性之间使用空格分割(换行or空白字符都可以)
属性值必须被引号引住

代码示例:

<persons>
	<person id="10001" groupid="1">        <!--标记属性,在标记开始时描述-->
		<name>李四</name>
		<age>18</age>
	</person>
	<person id="10002" groupid="1">
		<name>李四</name>
		<age>20</age>
	</person>
</persons>

5、 注释

注释不能写在文档声明前

注释间不能嵌套

格式:

注释开始: <!–
注释结束: -->


6、 根标记

标记与标记嵌套过程中最外层的部分叫做根,必须有且只能有一个根标记

names位于最外层,这段代码中有且仅有names一个根标记:

<names>
	<name>张三</name>
	<name>李四</name>
</names>

两个name都在最外层,无法区别哪个是根

<name>李四</name>
<name>麻子</name>

7、 层级称呼

层级称呼:子标记(后代标记的一种)、父标记、兄弟标记、后代标记、祖先标记

  • 子标记(后代标记的一种):上下相邻的被包含部分
  • 父标记:上下相邻的外层部分
  • 兄弟标记:同级
  • 后代标记:被包含部分
  • 祖先标记:外层部分

例如:
name是person的子标记,也是person的后代标记
person是name的父标记,也是name的祖先标记

name是persons的后代标记
persons是name的祖先标记

name与length护互为兄弟标记

对应代码如下:

<persons>
	<person>				
		<name>李四</name>
		<length>180cm</length>
	</person>
	<person>
		<name>李四</name>
		<length>170cm</length>
	</person>
</persons>

解析

  1. 引入jar文件
    dom4j.jar

  2. 创建一个指向XML文件的输入流
    FileInputStream fis = new FileInputStream(“xml文件的地址”);

  3. 创建一个XML读取工具对象
    SAXReader sr = new SAXReader();

  4. 使用读取工具对象, 读取XML文档的输入流 , 并得到文档对象
    Document doc = sr.read(fis);

  5. 通过文档对象, 获取XML文档中的根元素对象
    Element root = doc.getRootElement();

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Selcouther

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值