黑马就业班(02.JavaWeb+项目实战\04.XML)——XML

本文介绍了XML的基本概念、语法和组成部分,强调了XML在软件配置文件中的作用。讲解了XML的约束文档,包括DTD和Schema的使用。接着探讨了XML解析,重点在于Jsoup解析库的快速入门和不同对象的使用,以及XPath查询方法。提供了相关代码示例,展示了如何通过Jsoup和XPath操作XML文档。
摘要由CSDN通过智能技术生成

1、XML概念
  XML:Extensible Markup Language 可扩展标记语言。(基本介绍见视频2)

* 可扩展:标签都是自定义的。 <user>  <student>

	* 功能
		* 存储数据
			1. 配置文件
			2. 在网络中传输
	* xml与html的区别
		1. xml标签都是自定义的,html标签是预定义。
		2. xml的语法严格,html语法松散
		3. xml是存储数据的,html是展示数据

	* w3c:万维网联盟

2、XML语法

  • 基本语法:(如果想验证语法是否正确,我们可以将xml文件拖到浏览器中,如果浏览器可以解析且不报错,那么我们的xml文档就是正确的)
1. xml文档的后缀名 .xml
2. xml第一行必须定义为文档声明(注意,这里所说的第一行就是真正意义上的第一行,第一行必须是文档声明)
3. xml文档中有且仅有一个根标签(如下面快速入门中,<users>就是根标签)
4. 属性值必须使用引号(单双都可)引起来
5. 标签必须正确关闭
6. xml标签名称区分大小写
  • 快速入门
<?xml version='1.0' ?>
<users>
	<user id='1'>
		<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>

  这里注意,如果是自闭和的标签,“/”要写在标签名后面,比如
,这个标签在HTML里面是换行的意思,但是在这里只是我们定义的一个自闭和的标签。而其他标签,“/”则写在结束标签名的前面,比如。

  • 组成部分:
1. 文档声明
	1. 格式:<?xml 属性列表 ?>
	2. 属性列表:
		* version:版本号,必须的属性(version的值默认写作1.0即可)
		* encoding:编码方式。
		告知解析引擎当前文档使用的字符集,默认值:ISO-8859-1,但是我们xml文件真实的编码方式是GBK(我们在notepad++中设置文件的编码方式为ANSI,ANSI就是GBK编码的集合,具体参考文章:[各类编码方式的区别](https://blog.csdn.net/lr1916417519/article/details/83659226),反正在notepad中设置使用什么方式编码,就需要告诉浏览器使用什么方式解码。比如utf-8也可以解析中文,我们也可以使用utf-8编码解码),XML文件告知浏览器使用ISO-8859-1取解析GBK编码的文件,如果出现中文字符,就会解析错误。那么想要浏览器能解析中文,必须在文档声明中使用encoding属性设置告知浏览器此XML解码方式为GBK。
		现在如果使用IDEA工具,这个工具会自动识别我们当前的编码方式并解码,不需要我们指定encoding属性
		* standalone:是否独立(现在这个值都不会设置)
			* 取值:
				* yes:不依赖其他文件
				* no:依赖其他文件
2. 指令(了解):结合css可以控制标签的样式(早起xml是用来替代html的,但是现在一般只使用xml来存储,不需要与css结合了)
	* <?xml-stylesheet type="text/css" href="a.css" ?>
3. 标签:标签名称自定义的
	* 规则:
		* 名称可以包含字母、数字以及其他的字符 
		* 名称不能以数字或者标点符号开始 
		* 名称不能以字母 xml(或者 XML、Xml 等等)开始 
		* 名称不能包含空格 

4. 属性:
	id属性值唯一
5. 文本:
	* CDATA区:在该区域中的数据会被原样展示
		* 格式:  <![CDATA[ 数据 ]]>

  代码演示

<?xml version='1.0' encoding='utf-8' standalone='no' ?>
<!--
<?xml-stylesheet type="text/css" href="a.css" ?>
使用这个文件之后,我们发现xml文件被解析,就像浏览器解析html文件一样,不显示xml代码,只显示相应的内容
-->
<!--xml注释与html注释格式相同-->

<users>
    <user id='1'>
        <name>张三</name>
        <age>23</age>
        <gender>male</gender>
        <br/>
    </user>

    <user id='2'>
        <name>lisi</name>
        <age>24</age>
        <gender>female</gender>

        <!--下面是代码区域-->
        <code>
            <!--if(a < b && a>b){}-->
            <!--
            我们发现上面的代码报错,因为<,>等符号是特殊字符,需要使用转义字符表示(转义字符与html相同)
            虽然使用转义字符可以表示,但是这显然比较麻烦。我们可以使用CDATA区使得数据原样展示
            -->
            <!--if(s &lt; b &amp;&amp; a &gt; c){}-->

            <![CDATA[
                if(a < b && a>b){}
            ]]]>
        </code>
    </user>
</users>

约束:规定xml文档的书写规则

  关于XML的约束的相关概念,见视频5。
在这里插入图片描述
  XML文件就相当于一款软件的配置文件,我们使用一款软件,如果要设置一些个性化的信息,就必须通过XML文件,软件读取相应XML文件,才能获知用户的个性化设置信息。既软件使用者编写XML文件,软件解析XML文件。
  当然,这里所说的软件和用户不是普通的软件和用户,我们所说的软件是半成品软件,既框架。而用户指的就是使用框架进行开发的程序员。既程序员使用XML来与框架进行交流,从而使用框架进行开发。
  而所谓的约束文档(说明文档),就是用来规定相应XML文档的书写规则。约束文档是由软件(框架)提供的。我们作为程序员,只需要看懂约束文档,并根据约束文档的规则将XML文档编写出来即可。

* 作为框架的使用者(程序员):
	1. 能够在xml中引入约束文档(只有引入约束文档,才能约束相应的XML文档)
	2. 能够简单的读懂约束文档(高级开发工具有很多提示)

* 分类:
	1. DTD:一种简单的约束技术
	2. Schema:一种复杂的约束技术

  将IDEA中普通文件夹设置为资源部包(蓝色),点击想设置的文件夹,右键-Mark Directory as-source,这样就会将普通文件夹设置为蓝色的资源包。只有资源包才可以设置多层的包Package

1)DTD文档

* DTD:
	* 引入dtd文档到xml文档中
		* 内部dtd:将约束规则定义在xml文档中
		* 外部dtd:将约束的规则定义在外部的dtd文件中
			* 本地:<!DOCTYPE 根标签名 SYSTEM "dtd文件的位置">
			* 网络:<!DOCTYPE 根标签名 PUBLIC "dtd文件名字" "dtd文件的位置URL">

  DTD文档的阅读方式,见视频6-1.30。
  相应的dtd约束代码如下:

<!--dtd约束文档:student.dtd-->
<!ELEMENT students (student*) >  <!--定义一个students标签,里面可以存放*(零个或者多个)student子标签-->
<!ELEMENT student (name,age,sex)>   <!--定义一个student标签,里面可以存放一个name、age或sex子标签,并且子标签必须按照定义的顺序出现-->
<!ELEMENT name (#PCDATA)>   <!--定义一个name标签,里面可以存放#PCDATA,既字符串数据。下面的age、sex相同-->
<!ELEMENT age (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
<!ATTLIST student number ID #REQUIRED>  <!--声明student标签的属性,属性名称为number,而属性类型为ID,ID表示number的属性值必须唯一。#REQUIRED表示属性number必须出现-->

<!--
这里使用ELEMENT定义标签,使用ATTLIST定义属性
-->

  下面是相应的使用dtd约束的文档

<!--xml文件student.xml-->
<?xml version="1.0" encoding="UTF-8" ?>		<!--文档声明-->
<!--先引入dtd约束文档到当前的xml文档中-->
<!DOCTYPE students SYSTEM "student.dtd">

<!--内部dtd:少用
<!DOCTYPE students [
        <!ELEMENT students (student+) >
        <!ELEMENT student (name,age,sex)>
        <!ELEMENT name (#PCDATA)>
        <!ELEMENT age (#PCDATA)>
        <!ELEMENT sex (#PCDATA)>
        <!ATTLIST student number ID #REQUIRED>
        ]>
        -->


<students>
	<student number="s001">     <!--我们发现这里number的值前面不带英文字母会报错,也不知道为啥-->
		<name>zhangsan</name>
		<age>23</age>
		<sex>male</sex>
	</student>

	<student number="s002">
		<name>lisi</name>
		<age>24</age>
		<sex>female</sex>
	</student>
</students>

2)schema文档

* Schema:
	* 引入:
		1.填写xml文档的根元素
		2.引入xsi前缀.  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		3.引入xsd文件命名空间.  xsi:schemaLocation="http://www.itcast.cn/xml  student.xsd"
		4.为每一个xsd约束声明一个前缀,作为标识  xmlns="http://www.itcast.cn/xml" 

	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值