XML 标记语言

1 篇文章 0 订阅

XML 标记语言

<1> 简介

XML – 可扩展标记语言 语法类似 HTML , 初期设计用于取代 HTML 但被弃用. 现在主要作为储存数据的配置文件 (类似Properties) , 而并非展示数据, 标签内容通常不被执行.
★ 特点:
① 标签自定义
② 语法严格
③ 标签必须闭合(或自闭和 <br/> )
④ XML 标签名称区分大小写

<2> 基本语法

1. 文档声明

  1. XML 第一行必须为文档声明, 写法如下: <?xml version='1.0' ?>
  2. version: 版本号
    encoding: 编码方式
    standalone: 是否独立(是否依赖其他文件)
    例: <?xml version="1.0" encoding="utf-8" standalone='no' ?>
<?xml version='1.0' ?>      || XML 第一行必须为文档声明
<users>                     || 必须有且只有一个根标签
   <user id='1'>            || id 的值定义时必须加引号 (单双均可)
   	<name>zhangsan</name>
   	<age>23</age>
   	<gender>male</gender>
   	<br/>
   </user>
   	
   <user id='2'>
   	<name>lisi</name>
   	<age>24</age>
   	<gender>female</gender>
   </user>
</users>

2. 标签

  1. 标签名称只可以包含字母、数字以及其他的字符, 并且要以字母开头 (不能使用XML)
  2. id 值必须唯一

3. 文本

CDATA 区:在该区域中的数据会被原样展示
格式: <![CDATA[数据]]> 数据部分可分多行, 其会被原样展示, 无序转义符

<3> 约束

1. 简介

约束文档: 约束 XML 文档的标签定义规则 (标签的嵌套方式)

分类:

  1. DTD:一种简单的约束技术 (扩展名:dtd)
  2. Schema:一种复杂的约束技术 (扩展名:xsd)

2. DTD

(1) 基本语法

在这里插入图片描述

(2) 引用方式
1.外部约束

本地:<!DOCTYPE 根标签名 SYSTEM "dtd文件的位置">
网络:<!DOCTYPE 根标签名 PUBLIC "dtd文件名字" "dtd文件的位置URL">

2.内部约束

XML 中: <!DOCTYPE students [约束内容(可换行)]>


3.Schema

(1) 基本语法

Schema 用于解决 DTD 的局限性在这里插入图片描述

(2) 引用方式

在这里插入图片描述

<4> 解析

1. 概念

解析(读取): 将 XML 文档中的数据读取到内存中.
写入: 将内存中的数据永久保存到 XML 中.

2. 解析方法

(1) DOM

特点: 可以进行 CURD 所有操作, 但占用内存较大, 不适用于内存较小的设备.

(2) SAX

特点: 逐行读取, 读取后释放内存, 但是只能读取, 不能增删改.

3. 解析器 (Jsoup 解析器)

(1) 简介

Jsoup 是java 的 HTML 解析器, 也可解析 XML, 可直接解析 URL 地址, HTML 文本内容.

(2) 使用步骤

① 导JAVA包
② 获取 Document 对象
③ 获取对应标签的 Element 对象
④ 获取数据

(3) 对象的使用
1.Jsoup 工具类 — parse

parse​(File in, String charsetName): 解析 xml 或 html 文件的。

String path0 = Jsoup01.class.getClassLoader()/*←类加载器*/.getResource("a.xml").getPath();
Document document0 = Jsoup.parse(new File(path0), "utf-8");

★ XML 文档示例: a.xml :
在这里插入图片描述

parse​(String html): 解析 xml 或 html 字符串, 直接将 HTML 或 XML 文档语句以 String 字符串格式传参即可
parse​(URL url, int timeoutMillis): 通过网络路径获取指定的html或xml的文档对象, 第一个参数为网址的 URL 对象, 第二个参数为截至时间的毫秒值.

2. Document 文档对象

★ Document 对象用于获取 Element 对象, 以便后续操作

★ 注: 首先使用 Jsoup 获取到 Document 对象, 记为 document0

① 获取所有标签名称为 students 对象, 并返回 Element 集合:

Elements elements = document.getElementsByTag("student");

② 获取属性名 (XML中属性名为自定义) 为idt的元素对象, 并返回 Element 集合:

Elements elements1 = document.getElementsByAttribute("idt");

③ 获取 number 属性值为 a2 的元素对象, 并返回 Element 集合:

Elements elements2 = document.getElementsByAttributeValue("number", "a2");

④ 获取 id 为 d 属性值的元素对象, 并返回 Element 集合:

Element elements3 = document.getElementById("d");
3. Element 元素对象

① 获取属性值:
获取 student 对象的属性值:

String number = element_student.attr("number");

② 获取文本内容:

String text = element0.text();  // 将从 XML 中获取的 Element 对象解析为文本
String html = element0.html();  // 将从 XML 中获取的 Element 对象解析为 HTML

<5> 查询

1. selector 选择器

① 查询 name 标签:

Elements elements = document.select("name");

② 查询 id 为 s 的元素:

Elements elements1 = document.select("#s");

③ 获取 student 标签并且 number 属性值为 a1 的 age 子标签:

Elements elements3 = document.select("student[number=\"a1\"] > age");

2. XPath 选择器

★ 注: 使用 JSoup 中的 XPath 需要额外导包!

★ 注: 首先使用 Jsoup 获取到 Document 对象, 记为 document0
  使用 XPath时需要创建JXDocument对象:
  JXDocument jxDocument = new JXDocument(document);

在这里插入图片描述

在这里插入图片描述

List<JXNode> jxNodes = jxDocument.selN("//student");
for (JXNode jxNode : jxNodes) {
System.out.println(jxNode);}
  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

烂糊Java汤

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

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

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

打赏作者

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

抵扣说明:

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

余额充值