XML

XML

  • 概念:Extersible Markup Language 可扩展标记语言

    • 可扩展:标签都是自定义的。
  • 功能:

    • 存储数据:
      1. 配置文件
      2. 在网络中传输
  • 与html的区别:

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

语法

基本语法:

  1. xml第一行必须定义为文档声明
  2. xml文档中有且仅有一个根标签
  3. 属性值必须使用引号引起来
  4. 标签必须正确关闭
  5. xml标签名称区分大小写

组成部分:

  1. 文档声明

    1. 格式<?xml 属性列表 ?>
    2. 属性列表:
      • version:版本号,必须的属性
      • encoding:编码格式,告知解析引擎当前文档使用的字符集,默认值:ISO-8859-1
      • standalone:是否独立,是否依赖其他文件
  2. 指令:结合css的,了解即可。

  3. 标签:标签名称自定义的。

    • 规则:
      1. 数字或者标点符号不能开头
      2. 名称不能以字母xml或者XML开头
      3. 名称中不能包含空格
  4. 属性:id值唯一。

  5. 文本内容:

    • CDATA区:在该区域的文字会被原样展示。

      <![CDATA[
          文本内容
      ]]>

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

  • 分类:

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

    • 引入dtd文档到xml文档中
      1. 内部dtd:
        • <!DOCTYPE 根标签名 [dtd文件中具体内容]>
      2. 外部dtd:
        • 本地:<!DOCTYPE 根标签名 SYSTEM "dtd文件的位置">
        • 外部:<!DOCTYPE 根标签名 PUBLIC "随便取个文件名" "dtd文件的位置URL">
  • Schema:

    • 引入:
      1. 填写xml文档的根元素
      2. 引入xsi前缀 xmlns:xsi=”…”
      3. 引入xsd文件命名空间 xsi:schemaLocation=”….”
      4. 为每一个xsd约束声明一个前缀,作为标识 xmlns:…=”….”

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

  • 操作xml文档:

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

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

    1. JAXP:sun公司提供的解析器,支持DOM和SAX
    2. DOM4J:一款非常优秀的解析器,DOM方式
    3. Jsoup:是一款HTML解析器,但是比较好用,也可以用于解析XML,DOM方式
    4. PULL:Andriod操作系统内置的解析器,SAX方式

Jsoup

  • 快速入门:

    • 步骤:
      1. 导入jar包
      2. 获取Document对象
      3. 获取对应的标签Element对象
      4. 获取数据
  • 对象的使用:

    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 timeoustMillis):通过网络路径获取指定的html或xml的文档对象
    2. Document:文档对象,代表内存中得到DOM树

      • 获取Element对象:
        • getElementsByTag(String tagName):根据标签名称获取元素对象集合
        • getElementsByAttribute(String key):根据属性名称获取元素对象集合
        • getElementsByAttributeValue(String key,String value):根据对应的属性名称和属性值获取元素对象集合
        • getElementsById(String id):根据id属性值获取唯一Element对象
    3. Elements:元素Element对象的集合。可以当做ArrayList< Element>来使用

    4. Element:元素对象

      1. 获取子元素对象:
        • getElementsByTag(String tagName):根据标签名称获取元素对象集合
        • getElementsByAttribute(String key):根据属性名称获取元素对象集合
        • getElementsByAttributeValue(String key,String value):根据对应的属性名称和属性值获取元素对象集合
        • getElementsById(String id):根据id属性值获取唯一Element对象
      2. 获取属性值:
        • String attr(String key):根据属性名称获取属性值
      3. 获取文本:
        • String text();纯文本内容
        • String html():包括子标签的内容
    5. Node:节点对象

      • 是Document和Element的父类
  • 快速查询方式:

    1. selector:选择器

      • 使用的方法:Elements select(String cssQuery)
        • 语法:参考selector类中定义的语法
    2. XPath:XML路径语言,用来确定XML文档中某部分位置的语言

      • 使用Jsoup的Xpath需要额外导入jar包
      • 查询XPath语法完成查询
  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!

请我喝杯咖啡吧~

支付宝
微信