JavaWeb笔记(5)-XML

  1. XML:Extensible Marked Language可扩展标记语言
1. 可扩展:
    * 标签名称都是自定义
2. 功能:
    * 存储数据:
        1. 作为配置文件
        2. 在网络中传输
3. xml和html的区别:
    1. xml的标签是自定义的,hmtl的标签是预定义的
    2. xml的语法严格,html语法松散
    3. xml用于存储数据,html用于展示数据
  1. 语法格式:
1. 文档声明:必须定义在第一行顶格写
    <?xml version='1.0' ?>
2. 基本语法:
    * xml文档的后缀名为.xml
    * xml文档第一行顶格写文档声明
    * xml文档有且仅有一个根标签,像html中的<html></html>标签
    * xml文档中的标签必须正确关闭,要么自闭和,要么成对存在
    * xml文档标签严格区分大小写
3. 组成部分:
    1. 文档声明
        固定格式:
            <?xml 属性列表 ?>
            ?问号和尖括号之间以及xml不能有空格
        属性列表:
            version:版本号 -- 必须属性
            encoding:编码方式 
                -- 告诉解析引擎当前文档的字符集,如果不匹配,浏览器会报错
                -- 默认为ISO-8859-1编码方式
            standalone:独立属性
                -- "yes"表示该文件不依赖于其他文件
                -- "no"表示依赖其他文件
    2. 指令
        最早时候用来结合css控制样式的
    3. 标签
        自定义标签名称名称:
            1. 不能以数字和标点符号开始
            2. 不能以xml开始
            3. 不能含有空格
    4. 属性
        属性由键值对构成,属性值用引号(单双都可)包裹
        id属性值唯一,它代表一个元素的唯一标识
    5. 文本:
        * CDATA区:该区域内文本会被原样展示
            格式:<![CDATA[ 需要原样展示的数据 ]]>
            例如:
                <![CDATA[ if(a < b && a > c) {} ]]>
                正常情况下<,&&,>都要使用转义字符,放在CDATA区域后则不用
4. 约束:
    a. 约束文档:用于规范xml文档的书写规则
    b. 约束技术:
        1. DTD:较为简单的约束技术
            * <!ELEMENT 标签名 标签体内容>:定义标签名
            * <!ATTRLIST 标签名 属性值名称 属性值类型>:定义属性
            引入DTD约束:
                1. 在xml文件中定义DTD约束:一般不使用
                    格式:
                        <!DOCUMENT 根标签名 [
                            //约束内容
                        ]>
                2. 在xml文件中引入外部定义的DTD文件:
                    * 引入本地的DTD文件
                        <!DOCUMENT 根标签名 SYSTEM "dtd文件路径">
                    * 引入网络上的DTD文件
                        <!DOCUMENT 根标签名 PUBLIC "dtd文件名" "dtd文件的完整url">
        2. Schema:一种复杂的约束技术
            能够具体约束到各个标签的内容,属性,属性值等
            引入Schema约束文档:
                1. 一对尖括号<>包裹
                2. 先写根标签名称
                3. 引入xsi前缀:
                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                4. 引入xsd文件命名空间:
                    xsi:schemaLocation="命名空间 xsd文件路径"
                    命名空间是为引入的xsd文件起的名称
                5. 为每一个xsd约束文件取一个别名,只有一个时可以默认不取,用于区分访问哪个约束下的标签:
                    xmlns:别名="命名空间"
            使用:
                <别名:标签名></别名:标签名>
  1. 操作xml文档
1. 操作xml文档:
    a. 解析xml文档:将文档内容读取到内存中
    b. 写入xml文档将内存中的数据保存到xml文档中
2. 解析xml方式:
    a. DOM树:将文档一次性加载进内存,形成一棵DOM树
        * 优点:
            操作方便,可以对文档进入CRUD的所有操作 -- 适用于服务器端
        * 缺点:
            文档转化为DOM树非常占内存
    b. SAX:逐行读取,每读新一行,释放内存中的前一行。基于事件驱动(遇到开始标签事件)。
        * 优点:
            不占内存 -- 适用于移动端
        * 缺点:
            只能读取,不能增删改
2. 常见解析器:
    a. JAXP:sun公司提供,支持dom和sax两种方式 -- 但是并不好用
    b. DOM4J:
    c. Jsoup:是一款java的html解析器。通过DOM,css和类似jQuery的操作方式来读取和擦做数据
    d. PULL:Android内置解析器,sax方式
3. Jsoup解析器:Jsoup对象为一个工具类
    a. 使用步骤:
        1. 导入jar包:
            jsoup-1.11.2.jar
        2. 获取document对象:文档对象。代表内存中的dom树
            * 根据xml文档获取:
                Document Jsoup.parse(File in, charseName encodingName); 
                -- 参数传入xml文件对象,指定字符集为xml文档字符集
                -- 函数返回一个document对象
            * 根据xml或html字符串获取
                Document Jsoup.parse(String str);
                -- str为xml或者html文档内容的字符串形式
            * 根据网络资源获取
                Document Jsoup.parse(URL url, int timeoutMillis);
                -- 通过网络路径获取指定的xml文档
                -- URL url = new URL("url连接");
                -- 网络资源方式多用于爬虫解析
        3. 通过document成员方法获取元素Element对象:
            * 成员方法返回的如果时Elementss对象,则表示是Element对象的ArrayList集合
            * Document对象继承自Element对象,所以继承了其获取元素的成员方法
            * getElementsByTag(String tagName);//依据标签名称获取元素对象集合
            * getElementsByAttribute(String attrName);//依据属性名获取元素对象集合
            * getElementById(String id_value);//依据id属性值获取指定元素
        4. 通过Element对象的成员方标签内的数据
            * 获取子元素对象:
                由于Document对象继承自Element对象,所以也有相同获取子元素对象的方法
            * 获取属性值:
                String attr(String key);//依据属性名称获取属性值
            * 获取文本内容:
                String text();//获取标签和子标签内的纯文本内容
                String html();//获取标签体的所有内容(包括子标签标签文本)
    b. Node:节点对象
        Document对象和Element对象的父类
    c. 快捷索引标签:
        1. selector:选择器
            * 使用方法:
                Elements select(String cssQuery);
            * 选择器筛选语法cssQuery需要查看selector类中的定义
        2. XPath:xml路径语言
            * 使用Jsoup的XPath需要额外导包:
                JsoupXpath-0.3.2.jar
            * 该jar包是使用Jsoup来获取document对象,然后使用XPath方法来选取元素
                1. 首先使用Jsoup获取document对象
                2. 创建JXDocument对象:
                    JXDocument jxDocument = new JXDocument(document);
                3. 结合XPath语法查询:
                    List<JXNode> selN(String xpath);
                    JXNode selNOne(String xpath);
                    
                    List<Object> sel(String xpath);
                    Object selOne(String xpath)
            * xpath语法参考w3cshool手册即可
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值