xml笔记1

XML是一种可扩展标记语言,用于数据传输和存储,其特点是自定义标签和严格的语法。与HTML不同,XML专注于数据结构而非显示。XML文档需遵循特定的语法,如文档声明、命名规则等。解析XML有DOM和SAX两种方式,前者将整个文档加载到内存,后者逐行读取。常见的XML解析器包括JAXP、DOM4J和Jsoup。
摘要由CSDN通过智能技术生成

XML
1、什么是XML?有什么用?
    XML是重量级的数据传输格式
    在不同的语言之间进行数据传输的时候,可以使用XML进行数据传输

XML概述
1、XML概念
    xml一般指可扩展标记语言。可扩展标记语言 (Extensible Markup Language, XML) 
    可扩展:XML标签都是自定义的,可以自定义很多新的标签,叫做可扩展标签,所以叫做可扩展。
    标记语言:标签构成的语言
2、XML有什么作用/功能?
    存储数据
        1.配置文件
        2.在网络中传输
3、xml和html的区别?
    xml的标签都是自定义的,html的标签都是预定义的
    xml的语法非常严格,html语法松散
    xml是存储数据的,html是展示数据的。
4、w3c:万维网联盟
5、大部分浏览器都有xml的解析引擎(引擎就是核心程序)。
6、语法:
    1.xml文档的后缀名  .xml
    2.XML 声明文件的可选部分,如果存在需要放在文档的第一行,如下所示:
        <?xml version="1.0" encoding="utf-8"?>
    3.所有的 XML 元素都必须有一个关闭标签
    4.XML 标签对大小写敏感
    5.XML 必须正确嵌套
    6.XML 属性值必须加引号
    7.实体引用
        &lt;    <    less than
        &gt;    >    greater than
        &amp;    &    ampersand
        &apos;    '    apostrophe
        &quot;    "    quotation mark
    8.XML 中的注释
        <!-- This is a comment -->
    9.xml文档中有且仅有一个根标签。
        必须有一个根标记。
    10.属性值必须使用引号引起来“单双”引号都可以
7、XML 命名规则
    名称可以包含字母、数字以及其他的字符
    名称不能以数字或者标点符号开始
    名称不能以字母 xml(或者 XML、Xml 等等)开始
    名称不能包含空格
8、xml组成部分:
    1.文档声明
        格式:    <?xml 属性列表 ?>
            ?和尖括号之间、?和xml之间不能有空格,有空格会报错
            xml必须是小写的
            属性列表:
                version:版本号,必须的属性,不写报错(version='1.0')
                encoding:编码方式,告知浏览器以那种编码方式打开该xml文档,encoding的属性值一般与文件的编码方式一至
                    告知解析引擎当前的文档使用的字符集/编码方式,默认值iso-8859-1
                    encoding属性值是解析引擎使用的。
                    高级的开发工具,会自动识别encoding属性值,并且自动修改文件的编码方式。
                standalone:是否独立
                    yes:不依赖其他文件
                    no:依赖其他文件
        可有可无,如果有必须在文档的第一行,之前不能有空行
    2.指令(了解)结合css的
        <?xml-stylesheet type="text/css" href="1.css"?>
        对中文标签不起作用。
        1.css是引入的css样式,css在html中怎么写,xml中就怎么写
    3.标签
        名称可以包含字母、数字以及其他的字符
        名称不能以数字或者标点符号开始
        名称不能以字母 xml(或者 XML、Xml 等等)开始
        名称不能包含空格
    4.属性
        id属性值唯一
    5.文本内容    
        CDATA区:在该区域中的数据会被原样展示
            语法格式:<![CDATE[
                        数据
                      ]]>
9、谁编写xml?
        使用软件的用户编写。
        我们在使用spring框架的时候需要编写配置文件,
        spring就是软件(半成品软件),我们程序员就是使用软件的用户
   谁解析xml?
        软件本身区解析。
   谁类写约束?
        半成品软件的开发人员。(编写spring框架的人员)
10、什么是约束?
    规定xml文档的书写规则。
11、约束的分类
    第一种:
        DTD:一种简单的约束技术
            内部dtd:将约束规则定义在xml文档中。
                <!DOCTYPE 根标签名 [
                    写约束
                ]>
            外部dtd:将约束规则定义在外部dtd文件中。
                本地:<!DOCTYPE 根标签名 SYSTEM "dtd文件的位置">
                            SYSTEM表示系统、本地的意思。
                    示例:<!DOCTYPE students SYSTEM "student.dtd">  <!--student.dtd是相对位置-->    
                网络:<!DOCTYPE 根标签名 PUBLIC "dtd文件的名字" "dtd文件的位置">
                    dtd文件的名字:名字随意,写啥都可以
                    dtd文件的位置:是一个URL,什么http开头的一个路径
        一个xml文件中只能有一个“<!DOCTYPE >”这样的语句,引入dtd约束。(所以不存在两个根标签冲突的问题)
    第二种:
        Schema:一种复杂的约束技术
12、解析:操作xml文档,将文档当中的数据读取到内存当中
        将文档中的数据读取到内存当中。
    写入:内存中的数据保存到xml文档当中,持久化的存储。
13、解析xml的方式两种:
    DOM:将标记语言文档一次性加载进内存,在内存中形成一颗DOM树【通常使用在服务器端】
        优点:操作方便,可以对文档进行crud的所有操作
        缺点:消耗内存
    SAX: 逐行读取,基于事件驱动【通常使用在移动端】
        优点:不占内存
        缺点:只能读取,不能 增删改
14、常见的xml解析器
    解析器就是准对于DOM和SAX这两种不同的思想写出来的一些工具包,我们可以直接使用。
    1.JAXP:SUN公司提供的解析器,支持DOM和SAX两种思想。
    2.DOM4J:一款非常优秀的解析器。【我们在服务器端经常采用DOM4J来解析xml】
    3.Jsoup:jsoup是一款Java的HTML解析器。

通过Java程序解析xml文件
    // 获取xml文件的绝对路径
    String path = Thread.currentThread().getContextClassLoader().getResource("student.xml").getPath();
    // 定义文档对象
    Document document = null;
    try {
        // 获取xml文档对象
        document = Jsoup.parse(new File(path),"utf-8");
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
    // 通过标签名获取标签对象
    Elements tagName = document.getElementsByTag("name");
    // 因为Elements是java.util.ArrayList的子类,可以使用get(下标)的方法,获取集合中的元素
    Element element = tagName.get(0);
    // text()方法获取此元素及其所有子元素的组合文本。
    System.out.println(element.text());

对象的使用
1、Jsoup:工具类,可以解析html或者xml返回Document
    parse(File f,String charset)
    parse(String html) html是一个字符串
    parse(URL url,int timeoutMillis) // 解析网络中的html,第一个参数必须是一个URL对象不能是一个字符串
        可以通过方式3来做一下爬虫的小程序
2、Document:文档对象,代表内存中的DOM树
    主要通过Document对象来获取Element对象
        1.getElementsByTag(String tagName) : 根据标签名获取元素对象的集合
        2.getElementsByAttribute(String key):根据属性名称获取元素对象的集合
        3.getElementsByAttributeValue(String key,String value):根据属性名称和属性值获取元素对象的集合
        4.getElementById(String id):根据id属性值来获取唯一的element对象
    快速找到某个元素:
        Element select(String cssQuery); cssQuery是css选择器字符串。
3、Elements:元素Element对象的集合,可以当作ArrayList<Element>对象来使用
    
4、Element:元素对象
    获取子元素对象:
        1.getElementsByTag(String tagName) : 根据标签名获取元素对象的集合
        2.getElementsByAttribute(String key):根据属性名称获取元素对象的集合
        3.getElementsByAttributeValue(String key,String value):根据属性名称和属性值获取元素对象的集合
        4.getElementById(String id):根据id属性值来获取唯一的element对象
    获取属性值:
        String attr(String key):根据属性名称获取属性值
    获取文本内容:
        String text() :方法获取此元素及其所有子元素的组合文本
        String html() : 获取标签体的所有内容(包括子标签的字符串内容)
5、Node:节点对象
    Document和Element的父类。
    


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

薛英豪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值