XML

概念:可扩展标记语言

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

功能:存储数据

  • 配置文件
  • 在网络中传输

XML与HTML的区别:

  • xml标签都是自定义的,html标签是预定义的
  • xml语法严格,html语法松散
  • xml是存储数据的,html是展示数据的

语法:

  • 基本语法:

    • xml文档后缀名.xml

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

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

    • 属性值必须使用引号引起来

    • 标签必须正确关闭

      eg:

      <?xml version="1.0" encoding="utf-8" ?>
      <users>
          <user id="1">
              <name>zhangsan</name>
              <age>23</age>
              <gender>male</gender>
          </user>
          <user id="2">
              <name>lisi</name>
              <age>13</age>
              <gender>male</gender>
          </user>
      </users>
  • 组成部分:

    • 文档声明
      • 格式:<?xml version="1.0" encoding="utf-8" ?>
      • 属性列表:
        • version:版本号
        • encoding:编码方式
        • standalone:是否独立
    • 指令(了解):结合CSS
    • 标签:标签名称自定义
      • 规则:
        • 名称可以包含字母、数字及其他字符
        • 名称不能以数字或者标点符号开始
        • 名称不能以字母 xml等开始
        • 名称不能包含空格
    • 属性:id属性值唯一
    • 文本:
      • CDATA区:在该区域的数据会被原样显示
        • 格式:<![CDATA[ 数据 ]]>

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

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

解析:操作xml文档,将文档中的数据读取到内存中

  • 操作xml文档

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

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

    • JAXP:sun公司提供,支持dom和sax两种思想
    • DOM4J:一款非常优秀的解析器
    • Jsoup:是一款Java Html的解析器
    • PULL:Android操作系统内置的解析器,sax方式的
  • Jsoup解析器:

    • 快速入门:

      • 步骤:

        1. 导入Jar包
        2. 获取Document对象
        3. 获取对应标签的Element对象
        4. 获取数据
      • 代码:

                //获取xml的path
                String path = JsoupDemo.class.getClassLoader().getResource("Stu.xml").getPath();
                //读取xml文件,解析xml文档
                Document document = Jsoup.parse(new File(path),"utf-8");
                //获取对应元素的Element对象
                Elements name = document.getElementsByTag("name");
                System.out.println(name.size());
                //获取第一个name的Element对象
                Element element = name.get(0);
                //获取数据
                String text = element.text();
                System.out.println(text);
    • 对象的使用:

      • Jsoup:工具类,可以解析html和xml文档,返回Document
        • parse(File in,String CharsetName):解析xml或html文件的
        • parse(String html):解析字符串的
        • parse(URL url,int timeoutMillis):通过网络路径获取指定的html或xml的文档
      • Document:文档对象,代表内存中的dom树
        • getElementsByTag(String tagName):根据标签名称获取元素对象集合
        • getElementById(String id):根据id属性值获取唯一的element对象
        • getElementsByAttribute(String key):根据属性名称获取元素对象集合
        • getElementsByAttributeValue(String key,String value):根据对应的属性名和属性值获取元素对象集合
      • Elements:元素Element对象的集合,可以做ArrayList来使用
      • Element:元素对象
        • 获取子元素对象
          • getElementsByTag(String tagName):根据标签名称获取元素对象集合
          • getElementById(String id):根据id属性值获取唯一的element对象
          • getElementsByAttribute(String key):根据属性名称获取元素对象集合
          • getElementsByAttributeValue(String key,String value):根据对应的属性名和属性值获取元素对象集合
        • 获取属性值
          • String attr(String key):根据属性名称获取属性值
        • 获取文本
          • String text():获取属性内容
          • String html():获取标签体的所以内容(包括子标签的字符串内容)
      • Node:节点对象,Document和Element的父类
    • 快速查询方式:

      • selector:选择器
        • 使用的方法:Elements select(String cssQuery)
          • 语法:参考Selector类中定义的语法
      • XPath
Last modification:July 22nd, 2020 at 05:19 pm
如果觉得我的文章对你有用,请随意赞赏