27.日志技术、XML

news2024/9/22 19:25:19

目录

一.日志技术

1.1 什么是日志

1.2 目前记录日志的方案

1.3 日志技术的优势

1.4 日志技术体系

1.5 Logback框架

1.5.1 下载地址

1.5.2 模块组成

1.5.3 Logback的使用

二.XML

2.1 XML概述

2.2 XML的特点

2.3 XML文件的使用场景

2.4 XMl文件的创建

2.5 XML的语法规则

2.6 XML的标签(元素)规则

2.7 文档约束

2.8 XML文档约束——DTD

2.9 XML文档约束——schema

三.XML解析技术

3.1 什么是XML解析

3.2 分类

3.3 DOM解析

3.4 DOM4J

3.5 示例代码

四.XML检索技术

4.1 XML检索技术概述

4.2 步骤

4.3 Document中与Xpath相关的API

4.4 Xpath的四大检索方案

4.4.1 绝对路径

4.4.2 相对路径

4.4.3 全文检索

4.4.4 属性查找


一.日志技术

1.1 什么是日志

用来记录程序运行过程中的信息,并可以进行永久存储。好比生活中的日记,记录你的点点滴滴

1.2 目前记录日志的方案

用输出语句记录。
弊端:
信息展示在控制台。
不能方便的记录到其他位置(文件、数据库)
想取消记录的信息需要修改代码才可以完成。

1.3 日志技术的优势

可以将系统执行的信息,方便的记录到指定的位置(控制台、文件、数据库)
可以随时以开关的形式记录日志的记录和取消,无需侵入到源代码中去修改。

1.4 日志技术体系

日志接口:一些规范,提供给日志的实现框架设计的标准。
日志框架:牛人或者第三方公司已经做好的代码实现,后来者可以直接拿去使用。
注意:因为对 Commons Logging 接口不满意,有人就搞了slf4j 。因为对 Log4j 的性能不满意,有人就搞了 Logback Logback是基于slf4j的日志规范实现的框架。

1.5 Logback框架

1.5.1 下载地址

1.5.2 模块组成

Logback框架分为以下三个模块
Logback-core:该模块为其他二个模块提供基础代码。(必须有)
Logback-classic:完整实现了slf4j API的模块。(必须有)
Logback-access:该模块用于与tomcat,Jetty等servlet容器集成,以提供HTTP访问日志功能。(可选)

1.5.3 Logback的使用

想使用Logback,必须在项目中整合如下三个部分
slf4j-api:日志接口
Logback-core:基础模块
Logback-classic:功能模块,它完整实现了slf4j-api

二.XML

2.1 XML概述

XML是可扩展标记语言的缩写,它是一种数据表示格式,可以描述非常复杂的数据结构,常用于存储和传输数据。

2.2 XML的特点

1. XML语言书写的内容是纯文本,默认使用UTF-8编码。
2. 如果把XML内容存为文件,那么他就是一个XML文件。

2.3 XML文件的使用场景

1.XML文件经常被当成消息进行网络传输。
2.XML文件可以作为配置文件存储系统的信息。

2.4 XMl文件的创建

就是创建一个XML类型的文件,要求文件的后缀必须使用xml,如hello_w orld.xml

2.5 XML的语法规则

1. XML文件的后缀名必须是xml。
2. 文档声明必须是在第一行。
3. XML文件中可以定义注释信息,格式为:<!- 注释内容 -->
4. XML文件中可以存在以下特殊字符。因为XML不一定能正确识别关系运算符等特殊字符,所以用其他字符代替。
5. XML文件中可以存在CDATA区: <![CDATA[   …内容…  ]]>。
当大量的转义字符出现在xml文档中时,会使xml文档的可读性大幅度降低。这时如果使用CDATA段就会好一些。
在CDATA段中出现的“<”、“>”、“””、“’”、“&”,都无需使用转义字符。这可以提高xml文档的可读性。
在CDATA段中不能包含“]]>”,即CDATA段的结束定界符

2.6 XML的标签(元素)规则

1. 标签由一对尖括号和合法标识符组成 : <name></name> 必须存在一个根标签, 有且只能有一个。
2. 标签必须成对出现,有开始,有结束 : <name></name>
3. 特殊的标签可以不成对,但是必须有结束标记,如 : < br />
4. 标签中可以定义属性,属性和标签名空格隔开 , 属性值必须用引号引起来 <student id = 1 ></name>
5. 标签需要正确的嵌套

2.7 文档约束

1.问题引出
由于XML文件可以自定义标签,导致XML文件可以随意定义,程序在解析的时候可能出现问题。
2.什么是文档约束
是用来限定XML文件中的标签和属性应该怎么写。
3.文档约束的分类
文档约束分为DTD和schema

2.8 XML文档约束——DTD

1.需求:使用DTD文档约束,约束一个XML文件的编写。
2.步骤:
①编写DTD约束文档,后缀必须是.dtd。一般不用我们编写,后面的框架技术会帮我们准备好。
②在需要编写XML文件中导入该DTD约束文档。
③按照约束的规则编写XML文件的内容。
3.注意事项
不能约束具体的数据类型。

2.9 XML文档约束——schema

1.需求:
利用schema文档约束,约束一个XML文件的编写
2.步骤:
①编写schema文档约束,后缀必须是.xsd,具体的形式到代码中观看。
②在需要编写的XML文件中导入该schema约束文档
③按照约束内容编写XML标签
3.优点
①schema 可以约束具体的数据类型,约束能力上更强大。
②schema 本身也是一个 xml 文件,本身也受到其他约束文件的要求,所以编写的更加严谨

三.XML解析技术

3.1 什么是XML解析

使用程序读取XML文件中的数据。

3.2 分类

XMl解析分为SAX解析和DOM解析。
DOM解析:把整个XML文档读取到内存形成一棵文档树对象。
SAX解析: 逐行扫描XML文档,一边扫描一遍解析。

3.3 DOM解析

1.什么是DOM解析
把整个XML文档读取到内存形成一棵文档树对象,把XML文档中的每个标签、属性、数据看成一个个结点,然后对这些结点进行操作。
2.DOM常见的解析工具

3.4 DOM4J

1.需求:使用DOM4J解析XML文件
2.步骤:
①去官网下载DOM4J框架
②在项目中创建一个lib文件夹
③将dom4j框架所需的jar包复制到lib文件夹下
④在jar文件上右键, 选择 Add as Library -> 点击 OK
⑤在类中导包使用
3.DOM4J常用API:
SAXReader用于创建解析器对象,代表整个DOM4J对象。
Documnet类代表整个XML文档对象,Documnet对象用SAXReader的read方法获取。
DOM4J解析XML文件中的各种结点所需API:

3.5 示例代码

使用DOM4J提供的API进行文档的解析
xml文件代码:
解析代码:
public class TestDemo {
    //目标:掌握Dom4j框架的使用
    public static void main(String[] args) throws DocumentException {
        //1.创建解析器对象,代表整个Dom4j框架
        SAXReader saxReader = new SAXReader();
        //2.把整个XML文件读取到内存中成为一个Document对象
        //使用Class类中提供的方法获取xml文件的输入流,可以随便找个类对象
        InputStream is = Student.class.getResourceAsStream("/testfile.xml");
        Document document = saxReader.read(is);
        //3.使用框架提供的API
        // 获取document文档对象的根元素对象
        Element rootElement = document.getRootElement();
        System.out.println(rootElement.getName());
        //获取根对象下的所有子元素对象
        List<Element> elements = rootElement.elements();
        for (Element element : elements) {
            System.out.println(element.getName());
        }
        //获取根对象下的某个子元素对象
        Element body = rootElement.element("body");
        System.out.println(body.getText());
        System.out.println(body.getTextTrim());
        //获取属性值
        Element head = rootElement.element("head");
        Element title = head.element("title");
        Attribute id = title.attribute("id");
        System.out.println(id.getName()+"-->"+id.getValue());
        String type = title.attributeValue("type");
        System.out.println(type);

    }
}

四.XML检索技术

4.1 XML检索技术概述

XPath 使用 路径表达式 来定位 XML 文档中的元素节点或属性节点

4.2 步骤

1. 导入 jar (dom4j的 jaxen-1.1.2.jar) Xpath 技术依赖 Dom4j 技术
2. 通过 dom4j SAXReader 获取 Document 对象
3. 利用 XPath 提供的 API, 结合 XPath 的语法完成选取 XML 文档元素节点进行解析操作。

4.3 Document中与Xpath相关的API

4.4 Xpath的四大检索方案

4.4.1 绝对路径

采用绝对路径获取从根节点开始逐层的查找
代码示例:

4.4.2 相对路径

先得到根节点 contactList, 再采用相对路径获取下一级 contact 节点的 name 子节点并打印信息
代码示例:

4.4.3 全文检索

直接全文搜索所有的 name 元素并打印
代码示例:

4.4.4 属性查找

在全文中搜索属性,或者带属性的元素
代码示例:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/188373.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

江瀚新材登陆上交所主板:募资约24亿元,甘书官父子为实际控制人

1月31日&#xff0c;湖北江瀚新材料股份有限公司&#xff08;下称“江瀚新材”&#xff0c;SH:603281&#xff09;在上海证券交易所主板上市。本次上市&#xff0c;江瀚新材公开发行股票66,666,667股&#xff0c;发行价格为35.59元/股&#xff0c;发行市盈率为14.80倍。 按发行…

更高性能表现、更低资源占用,高精度计算数据类型 DecimalV3 揭秘

数值运算是数据库中十分常见的需求&#xff0c;例如计算数量、重量、价格等&#xff0c;为了适应多样化运算场景&#xff0c;数据库系统通常支持精准的数字类型和近似的数字类型&#xff0c;当我们需要精确地表示小数并计算小数时&#xff0c;通常会考虑使用 Decimal 数据类型。…

低代码编程核心技术概念

从技术概念来讲&#xff0c;低代码编程跟通用编程是完全一致的。要利用好低代码编程工具&#xff0c;至少要掌握下面的技术概念。低代码编程核心技术概念一、数据结构这里的数据结构&#xff0c;指一般意义上的数据表和数据字段。 类似于数据库中的表及字段的概念&#xff0c;也…

蓝桥杯2022 A组 python

蓝桥杯2022 A组 python A组相对于B组就五道题不一样 第一题&#xff1a;裁纸刀 就先把四个边剪一下&#xff0c;然后先行后列&#xff0c;蛮简单的 # 20行 横着19刀&#xff0c;竖着21*20 print(1921*204)第三题&#xff1a;质因数个数 这题我感觉就是跟一个约数个数的模板一…

【python】Twisted网络编程

Twisted什么是Twisted&#xff1f;为什么使用twisted&#xff1f;Twisted 写TCP通信基本实例- TCP服务端- TCP客户端Twisted的Deferred机制Why Deferred?Deferred TCP-ECHO客户端实现- TCP client为例&#xff0c;什么是Twisted&#xff1f; Twisted是一种非阻塞的网络服务器…

useEffect 依赖项为对象或数组时,引发不断重渲染问题的原因及解法

转载自 https://www.izhaoo.com/2021/11/01/useEffect-object-dependent/背景今天封了个轮子&#xff0c;对组件传入参数生成对应的动画实例&#xff0c;当入参变化时重新渲染新实例。自然而然想到的就是 useEffect 监听 props 依赖了&#xff0c;如&#xff1a;useEffect(() &…

ESD器件(TVS)选型考虑

参考&#xff1a;TOSHIBA《Basics of ESD Protection (TVS) Diodes》①VRWM: Working peak reverse voltage工作峰值反向电压&#xff1a;ESD保护二极管显示非常高的阻抗。高于这个电压&#xff0c;会通过指定大小漏电流。设计的时候&#xff0c;信号的最大出现电压要在这个电压…

Java基础漏洞(六)

巩固Java基础&#xff0c;基于韩顺平老师的课程&#xff0c;Java的封装、继承、多态、super()、this()、重载与重写的区别......&#xff0c;下面我们一点点来巩固练习。 &#xff08;1&#xff09;继承 继承细节1&#xff1a;子类无法继承父类的私有 图1 我们定义一个父类f…

Ansys Zemax | 利用 TrueFreeForm 面进行网格自由曲面的优化

在这篇文章中&#xff0c;我们将演示如何使用 OpticStudio 的 TrueFreeForm 面&#xff0c;设计AR/VR设备中的人眼追迹系统&#xff08;eye-tracking subsystem&#xff09;&#xff0c;这个系统通常位于装置的楔形透镜结构中。此外&#xff0c;为了完成子孔径&#xff08;sub-…

JSBridge:混合开发中的双向通信[Android、iOSJavaScript]

什么是WebView WebView 是移动端中的一个控件&#xff0c;它为 JS 运行提供了一个沙箱环境。WebView 能够加载指定的 url&#xff0c;拦截页面发出的各种请求等各种页面控制功能&#xff0c;JSB 的实现就依赖于 WebView 暴露的各种接口。 由于历史原因&#xff0c;IOS以8为分界…

【Java AWT 图形界面编程】事件处理机制 ② ( Frame 窗口事件监听器 WindowListener | 代码示例 )

文章目录一、Frame 窗口事件监听器 WindowListener二、Frame 窗口事件监听器 WindowListener 代码示例一、Frame 窗口事件监听器 WindowListener 在 AWT 中 , 为 Frame 窗口 添加 窗口事件监听器 WindowListener , 可以监听窗口的操作 , 如 : 窗口显示 WindowListener#windowO…

leetcode 1626. Best Team With No Conflicts(最佳无冲突团队)

scores数组中是每个队员的得分&#xff0c;ages数组中为对应队员的年龄&#xff0c; 现在要从这个队里挑选出一些队员&#xff0c;使总得分最高&#xff0c; 挑选时年龄大的要比年龄小的score更高&#xff08;严格大于&#xff09;&#xff0c;才不会产生冲突。 返回最高的得分…

【nestjs+VueJs全栈】- 后端搭建和数据库抽离

先补充一些nestjs的前置知识 控制器 控制器负责处理传入的请求和向客户端返回响应。 控制器的目的是接收应用的特定请求。路由机制控制哪个控制器接收哪些请求。通常&#xff0c;每个控制器有多个路由&#xff0c;不同的路由可以执行不同的操作。 为了创建一个基本的控制器…

React 组件基础

文章目录1. React 组件的两种创建方式1 使用函数创建组件2 使用类创建组件3 抽离为独立 JS 文件2. React 事件处理1.事件绑定2 事件对象3. 有状态组件和无状态组件4. 组件中的 state 和 setState1 state的基本使用2 setState()修改状态从 JSX 中抽离事件处理程序5.事件绑定 thi…

Python初学如何逆袭高手?22个万能公式汇总大全

嗨害大家好鸭&#xff01;我是小熊猫~ 本篇文章共22个万能公式~ 初学者友好~ 源码资料电子书:点击此处跳转文末名片获取 1、一次性进行多个数值的输入 对于数值的输入问题&#xff0c; 是很多笔试题目中经常遇到的问题&#xff0c; 一次性输入多个参数值 &#xff0c; 可以节…

AppiumDesktop学习总结

Appium学习总结 文章目录Appium学习总结一、简介二、环境准备1.下载并配置安卓SDK环境变量2.下载及安装AppiumDesktop3.安装AppiumDesktop4. 启动AppiumDesktop5.安装Python3.x环境6.安装Appium的Python客户端7.安装安卓模拟器8.安装被测APP&#xff1a;9.连接安卓设备三、运行…

NCRE二级 《MS Office高级应用》备考之路

文章目录一、WORD一、易考点二、解题思路二、EXCEL一、易考点二、解题思路三、PPT一、易考点二、解题思路四、其他一、WORD 一、易考点 1.设置页边距、纸张方向、纸张大小、装订线位置&#xff0c;分栏。 2.设置主题、页面边框、添加水印。 3.设置段间距、行间距、特殊格式&…

MySQL从入门到精通(第一篇):MySQL的基本语法及其设计,结合多篇文章

MySQL目录一、数据库入门1. 数据管理技术的三个阶段2. 关系型数据库与非关系型数据库3. 四大非关系型数据库a. 基于列的数据库&#xff08;column-oriented&#xff09;b. 键值对存储&#xff08;Key-Value Stores&#xff09;c. 文档存储&#xff08;Document Stores&#xff…

【日志首次上报积分最多】

题目描述 【日志首次上报最多积分】 日志采集是运维系统的的核心组件。日志是按行生成&#xff0c;每行记做一条&#xff0c;由采集系统分批上报。 如果上报太频繁&#xff0c;会对服务端造成压力;如果上报太晚&#xff0c;会降低用户的体验&#xff1b; 如果一次上报的条数…

【flyway入门及使用】解决生产环境sql更新遗漏

flyway入门及使用 一、简单介绍 flyway开源的数据库版本管理工具 二、为什么要使用flyway 1.自己写的sql没有在全部环境执行 2.别人写的sql没有在全部环境执行 3.有人修改了已经执行过的SQL&#xff0c;期望再次执行 4.需要新增环境做数据迁移 三、flyway是如何工作 1…