XML

XML

W3C:万维网联盟

  1. 概念:可扩展标记语言

    • 可扩展 : 标签都是自定义的。
    • 功能 : 1.配置文件 2.在网络中传输
    • xml和html的区别:
      1. xml的标签是自定义的,html标签是预定义的
      2. xml的语法严格,html语法松散
      3. xml是存储数据的,html是展示数据的
  2. 快速入门:

    • 基本语法:
      1. xml文档的后缀名 .xml
      2. xml第一行必须定义为文档声明
      3. xml文档中有且仅有一个根标签
      4. 属性值必须有引号引起来
      5. 标签必须正确关闭
  3. 组成部分:

    • 文档声明 : <?xml 属性列表>
      1. version:版本号,必须的属性
      2. encoding:编码方式
      3. standalone : 是否独立(yes / no)
    • 指令 : <?xml-stylesheet type="text/css" href="a.css" ?>
    • 标签 : 标签名自定义
    • 属性 : id值唯一
    • 文本 : CDATA区:在该区域的数据会被原样展示
      格式 : <![CDATA[ 数据 ]]>
  4. 约束: 规定xml文档的书写规则

    • 分类

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

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

      1. 引入xml 文档的根元素
      2. 引入xsi前缀, xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
      3. 引入xsd文件命名空间, xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd”>
      4. 为每一个xsd约束声明一个前缀,作为标识 xmlns=“http://maven.apache.org/POM/4.0.0”
  5. 解析: 操作xl文旦,将文档中的数据读取到内存中

    • 操作xml文档

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

      1. DOM : 将标记语言文档一次性加载进内存,在内存中形成一颗dom树
        • 优点 : 操作方便,可以对文档进行CRUD的所有操作
        • 缺点 : 占内存
      2. SAX : 逐行读取,基于事件驱动
        • 优点:不占内存
        • 缺点: 只能读取
    • xml常见的解析器:

      1. JAXP : sun公司提供的解析器,支持dom和sax两种思想
      2. DOM4J:一款非常优秀的解析器
      3. Jsoup :
      4. PULL : Android操作系统内在的解析器,sax方式
    • Jsoup的使用
      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. Docment : 文档对象,代表内存中的dom树
      - 获取Element对象
      - getElementsByTag(String tagname) : 根据标签名称获取元素集合
      - getElementsByAttribute(String key) : 根据属性名称获取元素对象集合
      - getElementsByAttributeValue(String key,String value) : 根据对应的属性名和属性值获取元素对象集合
      4. Element : 元素Element对象的集合。可以当做 ArrayList来使用
      5. Element : 元素对象
      6. Node: 节点对象

public class JsoupDemo1 {
    public static void main(String[] args) throws IOException {
        //获取Document对象,根据xml文档获取
        //获取student.xml的path
        String path = JsoupDemo1.class.getClassLoader().getResource("student.xml").getPath();
        //解析xml文档,加载文档进内存
        Document parse = Jsoup.parse(new File(path), "utf-8");
        //获取元素对象.Element
        Elements elements = parse.getElementsByTag("name");
        System.out.println(elements.size());
        Element element = elements.get(0);
        //获取数据
        String name = element.text();
        System.out.println(name);
    }
}
上一篇:Jsoup对象的几种解析方法


下一篇:Jetpack-MVVM高频提问和解答,分享一点面试小经验