A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© a181103135 初级黑马   /  2019-3-20 13:48  /  693 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一.        Xml概述
(1)什么是xml: 它是可扩展的标记语言。
        可扩展:xml文档里面的标签可以随意书写(满足规范)
        标记语言:通过标签编写xml文档。
什么是html:它是超文本标记语言
        超文本:超出了文本的范畴,在html文档里面可以定义文本,图片,音频等
        标记语言:html文档是通过标签编写的。
(2)区别:
1.        Xml标签可以随意写,html的标签是预定义好的,不能随意书写
2.        Html用途展示页面给用户看的,
3.        Xml用途:存储和管理数据的(体现应用场景:作为配置文件)
(3)Xml语法规范:
1.        文档声明必须在第一行第一列(在第一行的顶格)
2.        Xml文档只有一个跟标签
3.        Xml的属性值一定要用引号引起来(建议使用双引号)
Xml的组成:文档声明+指令(不用)+标签+属性+文本。
注意:
1.        标签命名:不能以数字开头,不能包含特殊字符。
2.        文本原样展示:<![CDATA[ 代码        ]]>
二.        Xml的约束(了解)
(1)什么是xml的约束:
制定一系列的规定(预定义好标签和属性),规范了在xml文档里哪些标签可以书写以及哪些属性可以书写。
(2)约束分两类
* DTD约束:语法比较简单,但是规范不是很严格和细化
*Schema约束:语法比较复杂,但是规范非常严格和细化



三.        解析xml(读取xml文件的数据)
(1)        xml解析的思想
注意:操作标签时(增删改),原则通过父标签操作子标签
        Dom解析方式
特点:一次性把整个标记性文档(xml),加载到内存了,形成一个dom树型结构,
所以说在内存中保留了标签的子父级关系。
比如:
                <users>
                                <user id=”001” name=”jack”>
                </users>
优点:由于保留完成的父子标签关系,所以可以对标签进行增删改操作。
缺点:由于一次性加载整个标记性文档,比较占内存
        Sax解析方式
特点:基于事件驱动读取内存中的xml文档,读取一行,丢弃一行,所以说在内存中没有保留标签的子父级关系。
缺点:由于没有保留子父级标签的关系。所以无法增 删 改标签操作
优点:读一行,丢弃一行,不占内存
(2)        常见的解析xml的技术
        基于dom思想解析的技术
1.        Jaxp: sun公司提供的技术
2.        Jdom:第三方的技术
3.        Dom4j: 第三方技术(主要解析xml)
4.        Jsoup:第三方技术(特长:解析html,也可以解析xml)
        基于sax思想的解析技术
Pull解析:第三方的技术
(3)        Jsoup解析xml
操作步骤:
1.        导入jsoup的jar包
2.        通过类加载器获取xml文件的绝对路径
3.        根据xml文件的绝对路径得到File对象,然后得到Document对象
4.        根据Document对象操作xml文档,可以获取xml文档的任意标签
5.        根据得到的标签对象可以操作标签的属性和文本。
(4)核心api
1. JSOUP工具类:
        parse(file ,charsetName): 解析本地的xml或者html文件。
        parse(url,long mills): 解析网络上的html文件(爬虫)
2. Document对象(表示一个文档),作用:获取文档上的元素
     *  获取名称为name的所有标签的集合:getElementsByTag(“name”);
         *  根据id获取单个标签对象:getElementById(“id的属性值”);
        * 根据属性名称获取标签对象的集合:getElementsByAttribute(“属性名称”);
3. Element对象(表示文档的标签对象)
         * 获取属性的值: String value  =  attr(“属性的名称”);
         * 获取标签体的纯文本内容:text();
         * 获取标签体的内容:html();
5.选择器(理解)
        (1)选择器:快速的筛选具有相似特征的标签,快速的定位到所需的标签。
        (2)选择器有使用方式
                * Jsoup自带选择器功能:选择器类似css选择器。
                * select(选择器参数);
        (3)Jsoup结合的xpath(选择器):
        * 注意:
1.导入与xpath的jar包  
2. 调用方法:selectN(xpath语法),
                            SelectOne(xpath语法);
                                注意:xpath语法只能定位到一个标签
                常见的xpath语法:
        //name:  查询所有name标签对象
比如:
        <users>
                <name>jack</name>
                <user>
                        <name>lisi</name>
                </user>
  </users>

        /根标签/name: 只查询根标签下的子标签name
比如:
        <users>
                <name>jack</name>
                <user>
                        <name>lisi</name>
                </user>
  </users>
        //@id: 查询具有id属性的标签
比如:
<users>
                <name id=”n1”>jack</name>
                <user id=”n2”>
                        <name>lisi</name>
                </user>
  </users>
        //name[@id]: 查询具有id属性的name标签
比如:
<users>
                <name id=”n1”>jack</name>
                <user id=”n2”>
                        <name id=”n3”>lisi</name>
                </user>
  </users>
        //name[@id=’n3’]:查询id=n3的name标签
比如:<users>
                <name id=”n1”>jack</name>
                <user id=”n2”>
                        <name id=”n3”>lisi</name>
                </user>
  </users>

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马