黑马程序员技术交流社区

标题: 【石家庄校区】 Day12 XML [打印本页]

作者: 18032086639    时间: 2018-12-21 19:27
标题: 【石家庄校区】 Day12 XML
本帖最后由 小石姐姐 于 2018-12-28 09:02 编辑

XML
        1.概念

                可扩展标记语言

                        *可拓展: 标签都是自定义的

                2.功能

                        *存储数据

                                **1.配置文件去使用*** 可以作为一种数据协议进行传输

                                **2.可以作为一种数据协议进行传输数据(跨平台)

                3.与html的区别

                        1.xml标签都是自定义的,html标签是预定义.

                        2.xml的语法严格,html语法松散

                        3.xml是储存数据的,html是展示数据

        *w3c 万维网联盟


        2.语法:

                *基本语法

                xml文档的后缀名是:  .xml

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

                xml文档中有且只有一个根标签

                标签中可以存在属性和内容

                属性值必须使用(单双都可以)引起来

                标签必须有结束语

                xml标签名称区分大小写

                后缀为.xml

                *快速入门


                *组成部分

                        1.文档声明:

                                格式: <?xml属性列表?>

                                属性列表:  

                                        version 版本号                         必须的属性

                                        encoding 编码方式                告知解析引擎当前文档使用的字符集,默认值ISO-8859-1

                                        standalone  是否独立

                                          取值:

                                          yes 不依赖其他文件

                                            no  依赖其他文件

                        2.指令


                        3.标签




                        4.属性

                                id属性值唯一

                        5.文本

                                CDATA区:在该区域中的数据会被原样显示

                                        格式:<![CDATA[

                                                ...

                                        ]]>




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

                        座位框架的使用者(程序员):

                                1.能够在xml中引入约束文档

                                2.能够简单的读懂约束文档


                分类:

                        1.DTD 简单的约束技术

                        引入dtd 文档到xml文档中

                                内部dtd 将约束规则定义在xml文档中

                                外部dtd 将约束的规则定义在外部的dtd文档中

                                        本地: <!DOCTYPE 根标签名 SYSTEM  "dtd文件的位置"

                                        网络:<!DOCTYPE 根标签名 Public "dtd文件名字" "dtd文件的位置URL">

                        缺陷:


                2.schema: 一种复杂的约束技术

                        * 引入:

                                1.填写xml文档的根元素

                                2.引入xsi前缀.  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

                                3.引入xsd文件命名空间.  xsi:schemaLocation="http://www.itcast.cn/xml  student.xsd"

                                4.为每一个xsd约束声明一个前缀,作为标识  xmlns="http://www.itcast.cn/xml"


                                      
[Java] 纯文本查看 复制代码
 <students   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

                                        xmlns="http://www.itcast.cn/xml"
                                        xsi:schemaLocation="http://www.itcast.cn/xml  student.xsd">

        *****dtd约束和schema的区别

                1.dtd约束文件后缀名是.dtd,schema约束文件后缀.xsd

                2.schema约束比dtd约束功能更强大

                3.dtd约束只能引入一个约束文件,schema约束可以引入多个文件

                4.schema约束支持命名空间(名称空间) namespace





3. 解析:操作xml文档,将文档中的数据读取到内存中
        * 操作xml文档
                1. 解析(读取):将文档中的数据读取到内存中
                2. 写入:将内存中的数据保存到xml文档中。持久化的存储


        ****** 解析xml的方式:
                1. DOM:将标记语言文档一次性加载进内存,在内存中形成一颗dom树
                        * 优点:操作方便,可以对文档进行CRUD的所有操作
                        * 缺点:占内存,可能会造成数据溢出
                2. SAX:逐行读取,基于事件驱动的。
                        * 优点:不占内存,执行效率快
                        * 缺点:只能读取,不能增删改




        
        ******* xml常见的解析器:
                1. JAXP:sun公司提供的解析器,支持dom和sax两种思想
                2. DOM4J:一款非常优秀的解析器
                3.Jsoup:jsoup是一款Java的HTML解析器,可直接解析某个URL地址、HTML文本内容。
                        它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
                4. PULL:Android操作系统内置的解析器,sax方式的。




        * Jsoup:
                        jsoup是一款Java的HTML解析器,可直接解析某个URL地址、HTML文本内容。
                        它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
                * 快速入门:
                        * 步骤:
                                1. 导入jar包
                                2. 获取Document对象
                                3. 获取对应的标签Element对象
                                4. 获取数据
        
        对象的使用:
                Jsoup:工具类,可以解析html或xml文档,返回Document
                        *parse解析html或者xml文档.
                        * parse:解析html或xml文档,返回Document
                        * parse?(File in, String charsetName):解析xml或html文件的。
                        * parse?(String html):解析xml或html字符串
                        * parse?(URL url, int timeoutMillis):通过网络路径获取指定的html或xml的文档对象
                2. Document:文档对象。代表内存中的dom树
                        * 获取Element对象
                                * getElementById?(String id ):根据id属性值获取唯一的element对象
                                * getElementsByTag?(String tagName):根据标签名称获取元素对象集合
                                * getElementsByAttribute?(String key):根据属性名称获取元素对象集合
                                * getElementsByAttributeValue?(String key, String value):根据对应的属性名和属性值获取元素对象集合
                3. Elements:元素Element对象的集合。可以当做 ArrayList<Element>来使用
                4. Element:元素对象
                        1. 获取子元素对象
                                * getElementById?(String id):根据id属性值获取唯一的element对象
                                * getElementsByTag?(String tagName):根据标签名称获取元素对象集合
                                * getElementsByAttribute?(String key):根据属性名称获取元素对象集合
                                * getElementsByAttributeValue?(String key, String value):根据对应的属性名和属性值获取元素对象集合


                        2. 获取属性值
                                * String attr(String key):根据属性名称获取属性值
                        3. 获取文本内容
                                * String text():获取文本内容
                                * String html():获取标签体的所有内容(包括字标签的字符串内容)
                5. Node:节点对象
                        * 是Document和Element的父类


                                                
* 快捷查询方式:                             
        1. selector:选择器
        * 使用的方法:Elements        select?(String cssQuery)                                                                * 语法:参考Selector类中定义的语法
        2. XPath:XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言
        * 使用Jsoup的Xpath需要额外导入jar包。
        * 查询w3cshool参考手册,使用xpath的语法完成查询
                                                                        
                        
        *******
               
什么是xml
        可扩展标记语言
xml的作用
        **1.作为配置文件存在
        **2.可以作为一种数据协议进行传输数据(跨平台)
                                                移动端  xmpp协议
                                                后台        webservice
        3.定义有格式的数据
        
        xml缺点
                浪费流量
               
               
xml语法格式=
        <?xml version="1.0" encoding="utf-8" ?>
        <根标签>
                <子标签 属性="">
                        内容  
                </子标签>
        </根标签>
        
        注意:
                1.<?xml version="1.0" ?>只能放在第一行第一列
                2.一个xml文档中只能有一个根标签                                          
                3.根标签中支持子标签
                4.标签中可以存在属性和内容
                5.文件的后缀为.xml
                6.encoding默认值是ISO-8859-1
               
        CDATA
                <![CDATA[
                        内容
                ]]>


               
约束:限制


dtd约束和schema约束的区别!!!!!
                1.dtd约束文件后缀名是.dtd,schema约束文件后缀.xsd
                2.schema约束比dtd约束功能更加强大
                3.dtd约束只能引入一个约束文件,schema约束可以引入多个文件
                4.schema约束支持命名空间(名称空间) namespace
                        
               
xml的解析方式(原理!!!)
        1.dom解析
                把文档全部加载,可以增删改查,可能导致内存溢出
        2.sax解析
                逐行解析,解析是基于事件驱动的,只能读取,对内存开销小,速度快
               
               
xml的解析器都有哪些(解析xml的jar包)
        jaxp
        *dom4j
        *jsoup(咱们学习的)
        pull(基于安卓!!)


        (获取而不是修改)
1.jar包放在项目根目录下的libs目录下
2.要解析的xml文件在src目录下
        url url =        类名.classgetclassloader().getresource("xml");
        string s=url.getpath;
                        
                        
        jsoup 使用步骤
                1.加载xml文件获取document对象
                2.通过document对象获取指定标签
                3.通过指定标签可以继续查找子内容
                4.通过标签获取属性值或者是内容  -->区分属性和内容
                        attr("属性名称");
                        text();        内容
                        html();        带标签的内容
                        
                        
                        
                        
                        
                        
                        






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2