XML

xml

1.概念

1.1概念

语法严格

Extensible Markup Language 可标记语言

  • 可拓展:标签都是自定义的

1.2功能

1.存储数据

2.配置文件

3.在网络上传输

1.3xml和html区别

  • 同属于w3c联盟

1.xml 标签都是自定义的,html标签是预定义

2.xml的语法严格,html语法松散

3.xml是存储数据的,html是展示数据的

2.语法:

2.1基本语法:

1.xml文档后缀名.xml

2.xml第一行必须定义为文档声明

3.xml文档中有且只有一个根标签

4.属性值必须使用引号(单双都可以)引起来

5.标签必须正确关闭

6.区分大小写

<?xml version='1.0'?>

<users>

	<user id='1'>
		<name>zhangsan</name>
		<age>23</age>
		<gender>male</gender>
	</user>
	<user id='2'>
		<name>lisi</name>
		<age>24</age>
		<gender>female</gender>
	</user>
</users>

组成部分

  • 文档说明

    • 格式:

    • 属性列表:

      • version:版本号,必须属性
      • encoding:编码方式,告知解析器殷勤当前文档使用的字符集,默认ISO-8859-1
      • standalone:是否独立
        • yes:不依赖其他文件
        • no:依赖其他文件
  • 指令(了解):结合css的

  • 标签:标签名称自定义

    • 规则:
      • 名称可以包含字母,数字以及其他的字符
      • 名称不能以数字或者标点开始
      • 名称不能以字母,xml等开始
      • 名称不能包含空格吧
  • 属性

    • ID属性值唯一
  • 文本

    • CDATA区:再改区域中的数据会被原样展示
      • 格式:

3.约束

3.1介绍

规定xml文档的书写规范

  • 作为框架的使用者(程序员)
    • 能够在xml中引入约束文档
    • 能够简单的读懂约束文档
  • 分类
    • DTD:一种简单的约束技术
    • Schema:一种复杂的约束技术

3.2 DTD

样例

<!ELEMENT students (student*)>
<!ELEMENT student (name,age,sex)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
<!ATTLIST student number ID #REQUIRED>
  • 引入到dtd文档
    • 内部dtd:将约束规则定义在xml文档中
    • 外部dtd:将约束规则定义在外部的dtd文件中
      • 本地:
      • 网络:

3.3 Schema

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

4.解析

将文档中的数据读取到内存中

4.1 操作xml文档

  1. 解析(读取):将文档中的数据读取到内存中
  2. 写入:将内存中的数据保存在xml中,持久化的储存

4.2 解析xml的方式

DOM

将标记语言文档一次性加载进内存,在内存中形成一颗dom树

  • 优点:操作方便,可以对文档进行CRUD的所有操作
  • 缺点:占内存

SAX

逐行读取,基于事件驱动

  • 优点:不占内部
  • 缺点:只能读取不能增删改查

5. DOM使用

5.1 实例

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.File;
import java.io.IOException;

public class JsoupDemo {
    public static void main(String[] args) throws IOException {

        String path = JsoupDemo.class.getClassLoader().getResource("student.xml").getPath();

        Document document = Jsoup.parse(new File(path), "utf-8");

        Elements Elements = document.getElementsByTag("name");

        Element element = Elements.get(0);

        System.out.println(element.text());


    }
}

5.2 对象介绍

  • 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的文档对象
  • Document:文档对象,代表内存中的dom树

    • 获取Element对象
      • getElementById(String id);
      • getElementByTag(String tagName);根据标签名称获取元素对象集合
      • getElementByAttribute(String key):根据属性名称获取元素对象集合
      • getElementByAtttibuteValue(String key, String value);根据对应属性名和属性值获取元素对象集合
  • Elements:元素Element对象集合,可以当做ArrayList来使用

  • Element:元素对象

    • 获取子元素对象
      • getElementById(String id);
      • getElementByTag(String tagName);根据标签名称获取元素对象集合
      • getElementByAttribute(String key):根据属性名称获取元素对象集合
      • getElementByAtttibuteValue(String key, String value);根据对应属性名和属性值获取元素对象集合
    • 获取属性值
      • String attr(String key);根据属性名称获取属性值
    • 获取文本内容
      • String text();获取文本内容
      • String html():获取标签体内的所有内容
  • Node:节点对象

    • 是Document和Element的父类

5.3 快速查询方式

  • selector:选择器
    • 使用的方法:Elements selector(String cssQuery)
    • 语法:参考Selector类中定义的语法
  • XPath:XPath即为XML路径语言,他是一种用来确定xml(标准通用标记语言的子集)文档只能中的某部分位置的语言
    • 使用Jsoup的Xpath需要额外导入jar包
    • 查询W3cshool参考手册,使用Xpath的语法完成查询
posted @ 2022-01-05 17:19  老彡  阅读(80)  评论(0编辑  收藏  举报