XML语言

XML 数据格式最主要的功能: 数据传输和存储

XML: 可扩展性标记语言,主要目的是传输和存储数据
XML标签必须自定义
XML是W3C推举的数据传输格式

要检查自己写的XML是否正确,可以通过浏览器打开

所有的XML必须有一个根节点,即所有标签必须在一个标签下

<root> <!--注释-->
	<user>adzt</user>
	<msg>run</msg>
</root>

与HTML的区别
  1. HTML标签不能自定义、XML标签必须自定义。
  2. HTML语法要求不严格,XML语法要求极其严格,必须是成对标签。
  3. XML用来传输和存储数据,HTML用来展示数据。

XML的基本语法
  1. XML必须有根节点,通常定义为root(根节点:其他所有节点的父级节点)
  2. 所有XML必须是成对出现
  3. XML标签名大小写敏感
  4. 标签不能交叉<a>a<b>b</a></b><!--这是不正确的-->
  5. 注释<!--在这里写注释-->
  6. 特殊字符使用实体转义:

在XML中,需要转义的字符有:
  (1)&   &amp;
  (2)<   &lt;
  (3)>   &gt;
  (4)"   &quot;
  (5)'   &apos;


XML属性

一个标签可以有多个属性,属性的值必须使用引号引起来
命名规则:同变量名的命名规则

<person>
    <man>
        <name age = "36" position = "神仙">太白</name>
    </man>
    <woman>
        <name age= " 60">老君</name>
    </woman>
</person>

属性是表示标签自身的一些额外信息
注意:在解析XML数据时,属性会带来额外的解析代码


CDATA语法<![CDATA[不解析的内容]]>
可以原样输出不解析的内容,特殊字符较多时可以使用CDATA。


XML组成:

  • 文档声明
    1. 格式<?xml 属性列表 ?>
    2. 属性列表:
      • version : 版本号,必须要有(针对程序员来说,而不是编译)
      • encoding : 编码方式
      • standalone : 是否独立
        • yes :不依赖于其他文件
        • no : 依赖于其他文件
  • 指令 : 结合CSS
  • 标签 :
    规则:
    1. 名称可以包含字母、数字以及其他字符
    2. 名称不能以数字或者标点符号开始
    3. 名称不能以字母xml开始
    4. 名称不能包含空格
  • 属性:ID属性值唯一
  • 文本

约束

规定XML文档的书写规则
分类:

  1. DTD : 一种简单的约束技术
  2. Schema :一种复杂的约束技术
DTD :引入dtd文档到xml文档当中,后缀。dtd
- 内部dtd : 将约束规则定义在XML文档中
- 外部dtd : 将约束规则定义在外部的dtd文件中
		- 本地 :`<!DOCTYPE  根标签名 SYSTEM "dtd文件的位置”>`
		- 网络 :`<!DOCTYPE 根标签名 PUBLIC "dtd文件名字" “dtd文件位置的URL”>`

局限性:

  1. 语法结构:
    DTD的语法与XMl不同,使用DOM,XPath,XSL无法处理,为自动化文档处理带来不便
  2. 数据类型
    DTD数据类型不能自由扩充,不利于XML数据交换场合验证,不能对内容进行限定
  3. 文档结构
    DTD中,所有元素、属性都是全局的, 无法声明仅与上下文位置相关的元素或属性
  4. 名称空间
    DTD中没有名称空间的概念,不直接支持名称空间
Schema:后缀,.xsd

引入步骤:

  1. 填写XML文档的根元素(根标签)
  2. 引入xsi前缀。(固定格式)xmlns:xsi = “http://www.w3c.org/2001/XMLSchema_instance”(有很多取值,根据需求来)
  3. 引入xsd文件命名空间 xsi:schemaLocation=“xsd文件的路径地址”
  4. 为每一个xsd约束声明一个前缀,作为标识。 xmlns:前缀名 =“命名空间”
    • 不写前缀名的话表示空前缀。
    • 当有多个约束有同一个属性时,可以通过前缀名将其区分。



解析操作:操作XML文档,将文档中的数据读取到内存中

  • 解析(读取): 将文档中的数据读取到内存当中
  • 写入 :将内存中的数据保存到XML文档中持久化存储

解析XML的方式:

  • DOM : 将标记语言文档一次性加载进内存,在内存中形成DOM树(服务端常用)
    优点 : 操作方便,可以对文档进行CRUD的所有操作
    缺点 : 占内存
  • SAX : 逐行读取,基于事件驱动(移动端常用)
    优点 : 不占内存
    缺点 : 只能读取,不能增删改

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


Jsoup使用

步骤:

  1. 导入jar包
  2. 获取Document对象
  3. 获取对应的标签Element对象
  4. 获取数据
package com.SpringMVC;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.File;
import java.io.IOException;

public class TestJsoup {
    public static void main(String[] args) throws IOException {
        // 获取Document对象
        String path = TestJsoup.class.getClassLoader().getResource("test.xml").getPath();

        //解析XML文档,加载文档进内存,获取DOM树
        Document document = Jsoup.parse(new File(path), "utf-8");

        //获取元素对象
        Elements elements = document.getElementsByTag("name");

        Element element = elements.get(0);
        String name = element.text();
        System.out.println(name);

    }
}


Jsoup中的对象使用:

  • Jsoup : 工具类,可以解析HTML或XML文档,返回Document对象
    parse :解析HTML或者XML文档,返回Document
  • Document : 文档对象。代表字内存中的DOM树
    主要用来获取Element对象
  • Elements :元素element对象的集合。可以当做ArrayList<Element>来使用
  • Ellement : 元素对象
  • Node : 节点对象

快捷查询方式 :

  1. selector: 选择器
  2. Xpath:XML的路径语言,用来确定XML文档中某部分位置的语言
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值