XML学习

一、概念

1、概念:

XML英文全程 Extensible Markup Language 可扩展标记语言,可扩展是什么意思呢,可扩展代表我们可以自己定义标签,如<student></student>标签。

2、功能:

XML 被设计用来传输和存储数据

3、应用:

xml可以当做配置文件、可以在网络中传输

4、XML与HTML的区别
  1. XML 被设计用来传输和存储数据,其焦点是数据的内容。
  2. HTML 被设计用来显示数据,其焦点是数据的外观。
  3. XML 标签都是自定义的,HTML标签是预定义。
  4. XML 的语法严格,HTML语法松散。

二、语法

1、基本语法
  1. xml文档的后缀名 .xml。
  2. xml第一行必须定义为文档声明。
  3. xml文档中有且仅有一个根标签。
  4. 属性值必须使用引号(单双都可)引起来。
  5. 标签必须正确关闭。
  6. xml标签名称区分大小写。
2、快速入门,XML实例
<?xml version="1.0" encoding="UTF-8"?>
	<note>
		<to>Tove</to>
		<from>Jani</from>
		<heading>Reminder</heading>
		<body>Don't forget me this weekend!</body>
	</note>
3、一个XML文档的组成部分
  1. 文档声明:

1、文档声明的格式: <?xml 属性列表 ?>
2、属性:文档声明中的属性有:
(1)version:版本号,他是必须要写的属性
(2)encoding:字符集编码,他用来告知解析xml的时候用什么字符集进行 解码不是必须的属性,如果不写默认是ISO-8859-1。
(3) standalone:是否独立,有两个取值,当是true,代表不依赖其他文件,当是false的时候代表依赖其他文件。

  1. 指令(了解即可,结合css使用)

1、指令的格式为:<?xml-stylesheet type="text/css" href="a.css" ?>

  1. 标签

1、标签就是我们自定义的,比如<user></user>、<student></student>

  1. 属性

1、属性就是我们用来说明有关元素的额外信息的,例如<user age=‘20’></user>,age='20’就是属性。 属性值必须被单引号或者双引号括起来,不然会报错

  1. 文本:

1、文本就是标签里的,比如<user>张三</user>,张三就是文本,有时候我们可能会用到一些特殊字符,那么我们就可以使用 CDATA区:在该区域中的数据会被原样展示
* 格式: <![CDATA[ 数据 ]]>

4、约束

      1、约束:规定xml文档的书写规则。
      2、约束的分类:
            DTD:一种简单的约束技术。
            Schema:一种复杂的约束技术。

5、DTD

      1、DTD是一种约束文档,如果我们要使用DTD约束文档,我们需要引入DTD文档。
      2、根据DTD格式分类:
            2.1、内部DTD:将约束规则定义在xml文档中
            2.2、外部DTD: 将约束的规则定义在外部的dtd文件中
                  2.2.1、本地DTD:dtd文件在本地
                  2.2.2、 网络DTD:dtd文件在网络中
      3、引入dtd文档
            3.1、如果引入本地dtd文档格式为:<!DOCTYPE 根标签名 SYSTEM “dtd文件的位置”>
            3.2、引入网络中的dtd文档的格式为:<!DOCTYPE 根标签名 PUBLIC “dtd文件名字” “dtd文件的位置URL”>
            3.3、内部引入:<!DOCTYPE 根标签名 [dtd规则]>

6、Schema

1、引入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”

2、例如:

	<students   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
				xmlns="http://www.itcast.cn/xml"
				xsi:schemaLocation="http://www.itcast.cn/xml  student.xsd">

三、解析

1、什么叫做解析:

xml的解析就是将xml文档的数据读取到内存中

2、解析的两种思想

2.1、DOM思想:DOM思想就是把xml文档全部加载到内存中,形成一颗树的形状,例如下图所示

<bookstore>
    <book category="COOKING">
        <title lang="en">Everyday Italian</title>
        <author>Giada De Laurentiis</author>
        <year>2005</year>
        <price>30.00</price>
    </book>
    <book category="CHILDREN">
        <title lang="en">Harry Potter</title>
        <author>J K. Rowling</author>
        <year>2005</year>
        <price>29.99</price>
    </book>
    <book category="WEB">
        <title lang="en">Learning XML</title>
        <author>Erik T. Ray</author>
        <year>2003</year>
        <price>39.95</price>
    </book>
</bookstore>

在这里插入图片描述
2.2、SAX思想:逐行读取,基于事件驱动的。

3、两种解析思想的优缺点

3.1、DOM思想
      优点:操作方便,可以对文档进行CRUD的所有操作
      缺点:占用内存
3.2、 SAX思想:
      优点:不占内存
      缺点:只能读取,不能进行其他操作

4、XML常见的解析器

4.1、 JAXP:sun公司提供的解析器,支持dom和sax两种思想

4.2、DOM4J:一款非常优秀的解析器

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

4.4.、PULL:Android操作系统内置的解析器,sax方式的。

四、Jsoup解析器的使用

1、jsoup快速入门

1.1、首先下载jar包,jsop的maven依赖坐标

<!-- https://mvnrepository.com/artifact/org.jsoup/jsoup -->
<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.11.2</version>
</dependency>

1.2、获取Document对象
1.3、获取element对象
1.4、获取元素值
1.5、代码实例

public class JsoupTest {
    public static void main(String[] args) throws IOException {
        //1获取student.xml的path
        String path = JsoupTest.class.getClassLoader().getResource("student.xml").getPath();
        //2解析xml文档,加载文档进内存,获取dom树--->Document
        Document document = Jsoup.parse(new File(path), "utf-8");
        //3.获取元素对象 Element
        Elements elements = document.getElementsByTag("name");

        System.out.println(elements.size());
        //4获取第一个name的Element对象
        Element element = elements.get(0);
        //5获取数据
        String name = element.text();
        System.out.println(name);


    }
}
2、jsoup中常用的对象和方法

2.1、Jsoup对象:工具类,可以解析html或xml文档,返回Document,常用的方法有: parse方法用来解析html或xml文档,返回Document,下面是他的重载方法

  • parse​(File in, String charsetName):解析xml或html文件的。
  • parse​(String html):解析xml或html字符串
  • parse​(URL url, int timeoutMillis):通过网络路径获取指定的html或xml的文档对象

2.2、Document对象:文档对象。代表内存中的dom树,用来获取Element对象,常用的方法有:

  • getElementById​(String id):根据id属性值获取唯一的element对象
  • getElementsByTag​(String tagName):根据标签名称获取元素对象集合
  • getElementsByAttribute​(String key):根据属性名称获取元素对象集合
  • getElementsByAttributeValue​(String key, String value):根据对应的属性名和属性值获取元素对象集合

2.3、Elements:元素Element对象的集合。可以当做 ArrayList来使用

2.4、Element对象,常用的方法分为三类;
   2.4.1、获取子元素对象

  • getElementById​(String id):根据id属性值获取唯一的element对象
  • getElementsByTag​(String tagName):根据标签名称获取元素对象集合
  • getElementsByAttribute​(String key):根据属性名称获取元素对象集合
  • getElementsByAttributeValue​(String key, String value):根据对应的属性名和属性值获取元素对象集合

   2.4.2、获取属性值

  • String attr(String key):根据属性名称获取属性值

   2.4.3、获取文本内容

  • String text():获取文本内容
  • String html():获取标签体的所有内容(包括字标签的字符串内容)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值