XML

XML:可扩展的标记语言。

XML用途:

  1. 统一的数据文件规范。统一
  2. 统一的解析API。易于使用
  3. 使用非常广泛。大小写敏感

XML实体引用:

&lt; :< (小于)

&gt; :>  (大于)

&amp :&(与)

&apos; :'(单引号)

&quot; :" (双引号)

XML格式:

一般情况下都是UTF-8编码,支持国际化。

处理指令(简称 PI):

是一个可选指令,用于指示XML解析器(XML API)如何处理XML文件,一般都会写在XML文件第一行。 

处理指令的起始:<?

处理指令的结束:?>

一条完整的处理指令:<?xml version="1.0" encoding="UTF-8"?>

  • version="1.0" 用于指定XML版本,至今一直是1.0
  • encoding="UTF-8" 是指XML中文字编码,建议使用UTF-8,建议不要改变任何字符,原封不动的写
  • standalone 是否允许使用外部声明(yes/no)yes指不适用外部声明

标记(tag)

标记由'<'开始,由'>'结束,中间是标记名(区分大小写)

例如:标记名可以任意扩展,建议使用英文作为标记名 <books>

标记分为开始标记:<books> 和结束标记:</books>

XML规定,标记必须成对使用,只有一个唯一的根标签。

标签的嵌套可以任意扩展。

注释:

<!-- 这里是注释的内容 -->,以’<!--‘开始,以'-->'结尾。

属性 attribute:

开始标签上可以定义属性,属性名=”属性值“(等号前后不能加空格,且单双引号均可

  • 属性名可以任意扩展,但是不能重复;
  • 属性值可以任意扩展,必须使用引号(单双引号均可);
  • 在开始标记中可以定义多个属性,属性没有顺序。

内容 content:

开始标记和结束标记之间称为内容,内容可以是:

  • 文本内容(<name>钢铁是怎样练成的</name>,这里的文字就是文本内容不包括一对标签)
  • 子标记
  • 子标记和文本混合 

 元素 element:

开始标记 + 内容 + 结束标记 :这个整体统称为元素(<name>)注,标记的名也作为元素的名。

可以有空元素:没有内用的元素,可以省略为自结束标记

例:<name></name>,这里name元素没有内容,可以省略为<name/>(自结束标记)

PCADTA 指被解析的字符数据

CDATA段 格式:<![CDATA[文本内容]]>

文本内用不会被解析,并且结尾']]>'不能有空格和换行。

XML语法是如何扩展的:

XML是可扩展标记语言,“其可扩展”表现为:

  1. 标记名(元素名)可以任意扩展
  2. 标记的嵌套关系可以任意扩展,或者元素的嵌套关系可以任意扩展
  3. 元素的属性可以任意扩展

XML API:

  1. 用于读取XML文件,写ML文件
  2. 提供非常简化访问方法
  3. XML API能自动识别XML语法(能识别元素,内容,属性,标记等),可以按照标记,属性等会去信息

常见的XML API(解析方式)

  1. SAX API 是底层API,很少直接使用,是一边扫描,一边解析,速度很快,但不能对节点做修改。是W3C组织定义的API。
  2. DOM API 是底层API,构造树形结构,可以遍历和修更改节点。
  3. Dom4j 是对标准DOM的封装扩展,其底层仍然是DOM,在DOM基础之上提供了更加简化的操作API,成为行业标准API。 
  4. Dom4j 是第三方API,需要导入到项目中使用。

Dom4J API:

利用maven导入Dom4j API。

<dependency>
        <groupId>dom4j</groupId>
        <artifactId>dom4j</artifactId>
        <version>1.6.1</version>
    </dependency>

SAXReader:

Dom4j读取解析XML文件的api,可以将一个xml文件读取解析为Document对象。

Document 文档:

Document 对象代表一个XML文件解析以后的内存对象,其数据结构与原始的xml文件结构相同。

读取内存中的Document对啊ing,就相当于读取了xml文件的内容,document对象提供了查找根元素的方法。

SAXReader reader = new SAXReader();
Document doc = reader.read("D:\\a.xml");
Element root = doc.getRootElement();
List<Element> list = root.gelments();

Element 元素

代表xml中的一个元素,读取到内存中的对象。Element 对象可以代表根元素,也可以代表子元素。

Element 提供了查找子元素的方法:

  1. 查找第一个满足条件子元素,适合查找唯一一个元素的时候:e.element(子元素名);
  2. 查找元素的全部子元素,不区别名字查找全部子元素,适合子元素名字都一样的情况,返回一个集合:e.elements();
  3. 查找元素中名字是“子元素名”,全部子元素很多,名字不相同,找出相同名字的一组子元素:e.elements(元素名);

获取元素文本内用的方法:e.getText();

获取当前元素的元素名: e.getName();

获取元素的属性方法:

List<Element> list = root.elements();
int i = 0;
for(Element e : list){
    // 从0 开始
   Attribute attr = e.attribute(i++);
    Attribute attr1 = e.attribute("name");
    // 属性名
    String name = attr.getName();
    // 属性值
    String value = attr.getValue();
}

可以了解下之前写的关于XML文件的解析方式详细介绍:https://blog.csdn.net/qq_42428264/article/details/89597992

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值