明明不太合适但是还是被用在配置文件和数据传输上的XML

XML概述:

概念:

可扩展的标记语言。

功能:

  1. 作为数据本地存储的格式。(已淘汰)作为结构化存储的方式,不如数据库效率高。目前一部分移动设备中还在使用。
  2. 作为网络中传输数据的格式。(已淘汰)作为网络传输的格式,在目前以移动互联网为主的环境中,格式太大,所以已被JSON格式替代。
  3. 作为配置文件的格式存储配置信息(主要功能)

    语法

文本

内部的数据会忽略特殊字符,原样输出<[CDATA[ 数据 ]]>

约束


定义xml文档中可以出现的标签、属性及取值范围等限制条件
作用:
开发阶段,我们都是引入别人写好的约束文件使用。
报错:当我们编写或属性写错时可以有友好的提示
开发时的代码提示:提升开发效率。

约束分类:

dtd(逐渐淘汰)老牌的约束技术,有独立的语法。限制规则比较少

schema(新兴)在约束文档中

约束文档:


xmlns:xsd="http://www.w3.org/2001/XMLSchema"定义当前文档为约束文档,可以指定约束的规则
targetNamespace目标名称空间, 用于指定当前文档的名称空间。类似于java代码中的package关键字。
此处一旦定义了名称空间,那么在实例文档中引入当前约束文件时,必须指定该名称空间。

实例文档:


xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"定义当前文档为实例文档,表示当前文档是被约束的,使用约束文件
xsi:schemaLocation="http://shinnippori.lofter.com/xml Aniki.xsd"引入名称空间http://shinnippori.lofter.com/xml,
实例文档中,除了w3c的约束之外,第三方自定义的约束,必须指定约束文件的地址Aniki.xsd(这里恰好是在一层目录内)。
格式:在schemaLocation中,依次编写key和value,key为名称空间的全名,value为约束文件的路径
如:
这里的名称空间/命名空间http://shinnippori.lofter.com/xml不是URL,是URI。
xml为了避免元素冲突,可以给元素加一个特别的前缀,但是必须给这个前缀定义一个命名空间,也就是必须用xmlns属性给这个前缀加一个特别的名字。这个名字必须是个URI。解析器不会用这个URI来查找信息,所以它可以是没有意义的,但实际上企业通常把命名空间指向一个真的含有相关信息的网址。

并可以为该名称空间起一个别名。xmlns:Shinnippori="http://shinnippori.lofter.com/xml"

一个xml中可以引入多个约束文件。类似于java中的import
一个xml中,最多可以有一个名称空间可以省略别名的定义。

xml解析

解析方式

1. dom


把文档加载进内存生成一颗dom树。

优点:

可以增删改查
速度比较快

缺点:

占用内存比较多,并不适用于内存比较紧张的环境。

2. sax


逐行加载

优点:

占用内存非常少,每次只加载一行数据

缺点:

只可以读取数据
速度比较慢

实际上,很多xml解析的工具,在实现时,会同时采用这两种解析方式。
JSOUP
    1. Jsoup:工具类,返回Document
        parse:解析html或xml文档,返回Document
            parse​(File in, String charsetName):解析xml或html文件的。
            parse​(URL url, int timeoutMillis):通过网络路径获取指定的html或xml的文档对象
    2. Document:代表内存中的dom树,所有的元素节点都在document中
        getElementXXXX
            这一系列的方法用于获取dom树中的元素节点。
    3. Element
        Document对象实际上是继承自Element。
        获取元素的属性
            attr()
        获取元素的标签体
            text()
            html()
    快捷查找元素的方式
        1. 选择器
            Element中使用Elements select(String selector)
                selector的语法和css的选择器语法保持一致
            使用选择器方式获取xml中的元素,这种方式不通用。
        2. Xpath*****
            xml通用的解析方式
            使用方式:
                先把document对象转为JXDocument
                使用JXDocument的selN()或者selNOne()查找元素
                这两个方法的参数为xpath的字符串
                    /  代表绝对路径
                    // 代表无论层级下的路径
                    *  通配符,代表所有
                    /AAA/BBB[1]
                        中括号中可以指定某个集合中的编号,从1开始
                    /AAA/BBB[last()]
                        获取集合的最后一个
                    //BBB[@id]
                        指定带有某个属性的元素
                    //BBB[@id='b1']
                        选择某个属性等于指定值的元素
                返回的是List<JXNode>或者JXNode,JXNode可以直接调用getElement转为原始的Element对##

猜你喜欢

转载自www.cnblogs.com/maomaodesu/p/12045779.html
今日推荐