首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >E009Web学习笔记-XML

E009Web学习笔记-XML

作者头像
訾博ZiBo
发布2025-01-06 14:39:46
发布2025-01-06 14:39:46
7080
举报

一、概述

1、概念

可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。

2、可扩展

标签都是自定义的;

3、功能

代码语言:javascript
复制
存储数据:
1、配置文件;
2、网络传输;

4、与HTML的区别

代码语言:javascript
复制
1、xml的标签的自定义的,html的标签是预定义的;
2、xml语法严谨,httml语法松散;
3、xml是存储数据的,html是展示数据的;

二、语法

1、基本语法

①xml文档的后缀名:.xml;

②xml第一行必须定义文档声明;

③xml文档中有且仅有一个根标签;

④属性值必须使用引号(单双都行)引起;

⑤标签必须有结束标签(可以定义自闭合标签);

⑥xml的标签名称区分大小写;

2、快速入门

代码语言:javascript
复制
<?xml version="1.0"?>
<users>
	<user id="1">
		<name>大哥</name>
		<age>23</age>
		<gender>男</gender>
	</user>
	<user id="2">
		<name>二哥</name>
		<age>22</age>
		<gender>男</gender>
	</user>
</users>

3、组成部分

①文档声明
代码语言:javascript
复制
1、格式:
<?xml 属性列表 ?>

2、属性列表
version:版本号,必须的属性;(1.0仍是主流版本)
encoding:编码方式,告知解析引擎当前文档使用的编码方式(字符集),默认是ISO-8859-1;
standalone:是否独立,意思是是否依赖于其他文件,取值是yes或者no;
②指令(了解)——结合css控制标签样式
代码语言:javascript
复制
<?xml-stylesheet type="text/css" src="...css" ?>
③标签

标签名称自定义;

代码语言:javascript
复制
命名规则:
名称可以含字母、数字以及其他的字符;
名称不能以数字或者标点符号开始;
名称不能以字符 “xml”(或者 XML、Xml)开始;
名称不能包含空格;
④属性

id属性值唯一;

⑤文本

特殊字符需要转义;

CDATA区:该区域的字符会被原样展示:
代码语言:javascript
复制
<![CDATA[
在这里写含有特殊字符的内容,可以被原样展示
]]>

三、约束

1、概述

规定XML书写规则;

2、对框架使用者(程序员)的要求

①能够在XML中引入约束文档;

②能够简单地读懂约束文档;

3、分类

DTD:简单的约束技术;

Schema:复杂的约束技术;

4、DTD

引入DTD文档约束到XML文件中的方式:

①内部DTD:将约束规则定义在XML文档中(不常用-了解);

代码语言:javascript
复制
(1)内部DTD的定义,语法如下:

<!DOCTYPE 根元素 [元素声明]>

(2)元素声明语法:

<!ELEMENT 元素名 (子元素[, 子元素...])>

(3)数量词

  +:表示出现1次或多次,至少一次

  ?:表示出现0次或1次

  *:表示出现任意次

(4)属性声明语法:

  -- 属性类型:CDATA,表示字符数据(character data)

  -- 默认值:

    - #REQUIRED,表示必须出现

    - #IMPLIED,表示不是必须的

<!ATTLIST 元素名称 属性名称 属性类型 默认值>

②外部DTD:将约束规则定义在DTD文件中;

代码语言:javascript
复制
引入外部DTD的两种方式:
本地:<!DOCTYPE 根标签名 SYSTEM "DTD文件的地址">
网络:<!DOCTYPE 根标签名 PUBLIC "DTD文件的名字" "DTD文件的地址">

5、Schema

代码语言:javascript
复制
引入Schema文档约束到XML文件中的步骤:
第一步:
查看schema文档,找到根节点,填写XML文档的根元素;

第二步:
引入xsi前缀,如xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";

第三步:
引入xsd文件命名空间,如xsi:schemaLocation="http://www.example.org/book book.xsd"

第四步:
为每一个xsd约束声明一个前缀作为标识,如xmlns="http://www.example.org/book"(引入单个约束可以不写名字)
代码示例:
代码语言:javascript
复制
代码示例:

<?xml version="1.0" encoding="UTF-8"?>
<books xmlns="http://www.example.org/book"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.example.org/book book.xsd">
	<book id="1001">
		<name>Thinking in Java</name>
		<author>Bruce Eckel</author>
		<price>86.4</price>
	</book>
	<book id="1002">
		<name>Head First 设计模式</name>
		<author>Freeman</author>
		<price>64.2</price>
	</book>
	<book id="1003">
		<name>深入理解Java虚拟机</name>
		<author>周志明 </author>
		<price>59.2</price>
	</book>
</books>

四、解析

1、操作XML

①解析(读取):将文档中的数据读取到内存中;

②写入:将内存中的数据保存到xml文档中,实现持久化存储;

2、解析xml的方式

①DOM:将标记语言文档一次性加载进内存,在内存中形成一个dom树;

代码语言:javascript
复制
优点:
操作简单,可以对稳定进行CRUD的所有操作;
缺点:
占内存;

②SAX:逐行读取,基于事件驱动;

代码语言:javascript
复制
优点:不占内存;
缺点:只能读取,不能增删改;

总结:

在服务端一般用DOM思想,在移动的一般使用SAX思想;

3、xml常见的解析器

①JSXP:SUN公司提供的解析器,支持dom和sax两种思想;

②DOM4J:一款非常优秀的解析器,基于DOM思想实现;

③JSoup:jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。

④PULL:Android内置解析器,SAX方式;

4、JSoup快速入门

使用步骤:

第一步:导入JAR包;

第二步:获取Document对象;

第三步:获取对应的标签(Element对象);

第四步:获取数据;

5、JSoup官方教程地址:

https://www.open-open.com/jsoup/

6、获取数据的常用方法:
①通过JSoup获取Document对象:
代码语言:javascript
复制
parse(File in,String charsetName):解析xml或者html文件;
parse(String html):解析xml或者html字符串;
parse(URL url,int timeoutMillis):通过网络地址获取xml或者html文档对象;

上面返回的是Document对象;
②通过Document对象获取Element对象(集合)(Elements可以当中ArryList<Element>使用):
代码语言:javascript
复制
getElementById():通过id获取唯一的Element对象;
getElementsByTag():通过标签名获取元素的对象集合;
getElementsByAttribute():根据属性名称获取元素的对象集合;
getElementsByAttributeValue():根据对应的属性名和属性值获取元素的对象集合;
③通过Elements对象(集合)获取数据
代码语言:javascript
复制
1.获取子元素对象
getElementById(String id):根据id属性值获取唯一的element对象
getElementsByTag(String tagName):根据标签名称获取元素对象集合
getElementsByAttribute(String key):根据属性名称获取元素对象集合
getElementsByAttributeValue(String key, string value):根据对应的属性名和属性值获取元素对象集合

2.获取属性值
string attr(string key):根据属性名称获取属性值

3.获取文本内容
string text():获取文本内容
String html():获取标签体的所有内容(包括字标签的字符串内容)
④Node节点:

是Document和Element的父类;

7、快捷查询选择器

selector:选择器
代码语言:javascript
复制
方法:
Elements select(String cssQuery);
Xpath

XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言。

注意:使用JSoup的Xpath需要额外导入一个jar包,即JsoupXpath-XXX.jar;

Xpath教程地址:

https://www.runoob.com/xpath/xpath-tutorial.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-01-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、概述
    • 1、概念
    • 2、可扩展
    • 3、功能
    • 4、与HTML的区别
  • 二、语法
    • 1、基本语法
    • 2、快速入门
    • 3、组成部分
      • ①文档声明
      • ②指令(了解)——结合css控制标签样式
      • ③标签
      • ④属性
      • ⑤文本
      • CDATA区:该区域的字符会被原样展示:
  • 三、约束
    • 1、概述
    • 2、对框架使用者(程序员)的要求
    • 3、分类
    • 4、DTD
      • 引入DTD文档约束到XML文件中的方式:
    • 5、Schema
      • 代码示例:
  • 四、解析
    • 1、操作XML
    • 2、解析xml的方式
    • 3、xml常见的解析器
    • 4、JSoup快速入门
      • 使用步骤:
      • 5、JSoup官方教程地址:
      • 6、获取数据的常用方法:
      • ①通过JSoup获取Document对象:
      • ②通过Document对象获取Element对象(集合)(Elements可以当中ArryList<Element>使用):
      • ③通过Elements对象(集合)获取数据
      • ④Node节点:
    • 7、快捷查询选择器
      • selector:选择器
      • Xpath
      • Xpath教程地址:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档