XML基础知识

1. 常见配置文件类型

  1. properties文件,例如druid连接池就是使用properties文件作为配置文件

  2. XML文件,例如Tomcat就是使用XML文件作为配置文件

  3. YAML文件,例如SpringBoot就是使用YAML作为配置文件

  4. json文件,通常用来做文件传输,也可以用来做前端或者移动端的配置文件

1.1 properties配置文件

语法规范

  • 由键值对组成

  • 键和值之间的符号是等号

  • 每一行都必须顶格写,前面不能有空格之类的其他符号

1.2 XML配置文件

示例:

XML 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<students>
    <student>
        <name>张三</name>
        <age>18</age>
    </student>
    <student>
        <name>李四</name>
        <age>20</age>
    </student>
</students>

XML的基本语法

  • XML的基本语法和HTML的基本语法简直如出一辙。其实这不是偶然的,XML基本语法+HTML约束=HTML语法。在逻辑上HTML确实是XML的子集。
  • XML文档声明 这部分基本上就是固定格式,要注意的是文档声明一定要从第一行第一列开始写
XML 复制代码
<?xml version="1.0" encoding="UTF-8"?>
  • 根标签

    • 根标签有且只能有一个。
  • 标签关闭

    • 双标签:开始标签和结束标签必须成对出现。

    • 单标签:单标签在标签内关闭。

  • 标签嵌套

    • 可以嵌套,但是不能交叉嵌套。
  • 注释不能嵌套

  • 标签名、属性名建议使用小写字母

  • 属性

    • 属性必须有值

    • 属性值必须加引号,单双都行

XML的约束(稍微了解)

将来我们主要就是根据XML约束中的规定来编写XML配置文件,而且会在我们编写XML的时候根据约束来提示我们编写, 而XML约束主要包括DTD和Schema两种。

  • DTD

  • Schema

Schema约束要求我们一个XML文档中,所有标签,所有属性都必须在约束中有明确的定义。

下面以web.xml的约束声明为例来做个说明:

XML 复制代码
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

2. DOM4J进行XML解析

2.1 DOM4J的使用步骤

  1. 导入jar包 dom4j.jar

  2. 创建解析器对象(SAXReader)

  3. 解析xml 获得Document对象

  4. 获取根节点RootElement

  5. 获取根节点下的子节点

2.2 DOM4J的API介绍

  1. 创建SAXReader对象
java 复制代码
SAXReader saxReader = new SAXReader();
  1. 解析XML获取Document对象: 需要传入要解析的XML文件的字节输入流
java 复制代码
Document document = reader.read(inputStream);
  1. 获取文档的根标签
java 复制代码
Element rootElement = documen.getRootElement();
  1. 获取标签的子标签
java 复制代码
//获取所有子标签
List<Element> sonElementList = rootElement.elements();
//获取指定标签名的子标签
List<Element> sonElementList = rootElement.elements("标签名");
  1. 获取标签体内的文本
java 复制代码
String text = element.getText();
  1. 获取标签的某个属性
java 复制代码
String value = element.attributeValue("属性名");
相关推荐
qq_392794487 分钟前
前端缓存策略:强缓存与协商缓存深度剖析
前端·缓存
fmdpenny30 分钟前
Vue3初学之商品的增,删,改功能
开发语言·javascript·vue.js
小美的打工日记43 分钟前
ES6+新特性,var、let 和 const 的区别
前端·javascript·es6
涛ing1 小时前
21. C语言 `typedef`:类型重命名
linux·c语言·开发语言·c++·vscode·算法·visual studio
helianying551 小时前
云原生架构下的AI智能编排:ScriptEcho赋能前端开发
前端·人工智能·云原生·架构
@PHARAOH1 小时前
HOW - 基于master的a分支和基于a的b分支合流问题
前端·git·github·分支管理
等一场春雨1 小时前
Java设计模式 十四 行为型模式 (Behavioral Patterns)
java·开发语言·设计模式
涔溪1 小时前
有哪些常见的 Vue 错误?
前端·javascript·vue.js
程序猿online1 小时前
前端jquery 实现文本框输入出现自动补全提示功能
前端·javascript·jquery
黄金小码农1 小时前
C语言二级 2025/1/20 周一
c语言·开发语言·算法