【特殊文本文件——Properties和xml文件】

news2024/11/30 10:30:16

特殊文本文件

一、Properties

  • 是一个Map集合(键值对集合),但是我们一般不会当集合用
  • 核心作用:Properties是用来代表属性文件的,通过Properties可以读写属性文件里的内容

1.使用Properties读取属性文件里的键值对数据

(1)构造器

  • public Properties():用于构建Properties

(2)常用方法

  • public void load(InputStream is):通过字节输入流,读取属性文件里的键值对数据
  • public void load(Reader reader):通过字符输入流,读取属性文件里的键值对数据
  • public String getProperty(String key):根据键获取值(其实就是get方法的效果)
  • public Set < String >stringPropertyNames():获取全部键的集合(其实就是ketSet方法的效果)
public class Demo01 {
    public static void main(String[] args) throws IOException {
        //创建Properties集合对象
        Properties prop = new Properties();
        //读取文件中的键值对数据
        prop.load(new FileReader("day11\\users.properties"));
        //获取所有键的集合(类似map的keySet方法)
        Set<String> keys = prop.stringPropertyNames();
        for (String key : keys) {
            //根据键获取值(类似map的get方法)
            String value = prop.getProperty(key);
            System.out.println(key + "," + value);
        }
    }
}

在这里插入图片描述
在这里插入图片描述

2.使用Properties把键值对数据写出到属性文件里去

  • public Object setProperty(String key,String value):保存键值对数据到Properties对象中去
  • public void store(OutputStream os,String comments):把键值对数据,通过字节输出流写出到属性文件中
  • public void store(Writer w,String comments):把键值对数据,通过字符输出流写到属性文件中
public class Demo02 {
    public static void main(String[] args) throws IOException {
        //创建Properties集合对象
        Properties p = new Properties();
        //存储键值对数据(类似map的put方法)
        p.setProperty("《红楼梦》","曹雪芹");
        p.setProperty("《水浒传》","施耐庵");
        p.setProperty("《西游记》","吴承恩");
        p.setProperty("《三国演义》","罗贯中");
      //public void store(Writer w/OutputStream os, String comments); 将键值对数据存入指定的文件,comments注释
        p.store(new FileWriter("day11\\books.properties"),"这是我的收藏书籍");
    }
}

在这里插入图片描述

二、XML文件

  • XML(可扩展的标记语言)是一种数据格式,能用来存储复杂的数据结构,由很多标签组成,而标签的名字是可以自定义的

1.特点

(1)xml中<标签名>成为一个标签或元素,必须成对出现

(2)xml中的标签可以自定义(可扩展),但必须正确的嵌套

(3)xml中只能有一对根标签

(4)xml中的标签可以自定义属性,属性和标签名用空格隔开,属性值必须用引号引起来

(5)如果一个文件中放置的是XML格式的数据,这个文件就是XML文件,后缀一般写成.xml

2.XML语法规则

  • xml文件文档声明必须在第一行
  • xml中可以定义注释信息:< !–注释内容 – >
  • xml中书写"<“、”&"等,可能会出现冲突导致报错,可以用特殊字符替代
  • xml文件中可以存在CDATA区,用来书写多个特殊字符:< ![CDATA[…内容…]]>

3.解析XML文件

(1)就是使用程序读取XML文件中的数据

(2)解析XML框架,最知名的是Dom4j(第三方)

(3)DOM(文档对象模型)解析思想:将文档的各个组成部分看做是对应的对象

(4)DOM4J准备工作

  • 将jar包拖入项目的lib文件夹下
  • 对着jar包右键,选择Add As Library
  • 创建DOM4J解析器对象,获取Document文档对象,getRootElement获取根标签

(5)一层一层解析

​ Dom4j解析XML得到Document对象

  • SAXReader:Dom4j提供的解析器

    • public SAXReader():构建Dom4J的解析器对象
    • public Document read(String url):把XML文件读成Document对象
  • Document:文档对象

    • Element getRootElement():获取根元素对象

(6)Element提供的方法

  • public String getName():得到元素名字
  • public List< Element > element():得到当前元素下的所有子元素
  • public List< Element > elements(String name):得到当前元素下指定名字的子元素返回集合
  • public Element Element (String name):得到当前元素下指定名字的子元素,如果有很多名字相同的返回第一个
  • public String attributeValue(String name):通过属性名直接得到属性值
  • public String elementText(子元素名):得到指定名称的子元素文本
  • public String getText():得到文本
public class Demo {
    public static void main(String[] args) throws DocumentException {
        //创建解析器对象
        SAXReader saxReader = new SAXReader();
        //获取文档对象
        Document document = saxReader.read("day11\\users.xml");
        //获取根标签
        Element rootElement = document.getRootElement();
        //获取所有指定名称的子标签
        List<Element> elements = rootElement.elements("user");
        //创建集合
        ArrayList<User> list = new ArrayList<>();
        //遍历集合,获取子标签
        for (Element element : elements) {
            //获取id属性
            String id = element.attribute("id").getValue();
            //获取name文本
            String name = element.element("name").getText();
            //获取password文本
            String password = element.element("password").getText();
            //获取address文本
            String address = element.element("address").getText();
            //获取password文本
            String gender = element.element("gender").getText();
            //封装User对象
            User user = new User(id,name,password,address,gender.charAt(0));
            //添加到集合
            list.add(user);
        }

        //验证
        for (User user : list) {
            System.out.println(user);
        }
    }
}

//用户类
class User{
    private String id;
    private String name;
    private String password;
    private String address;
    private Character gender;

    public User() {
    }

    public User(String id, String name, String password, String address, Character gender) {
        this.id = id;
        this.name = name;
        this.password = password;
        this.address = address;
        this.gender = gender;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public Character getGender() {
        return gender;
    }

    public void setGender(Character gender) {
        this.gender = gender;
    }

    @Override
    public String toString() {
        return "User{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", password='" + password + '\'' +
                ", address='" + address + '\'' +
                ", gender=" + gender +
                '}';
    }
}

4.XML约束文档

(1)专门用来限制xml书写格式的文档,比如:限制标签,属性应该怎么写

(2)约束文档的分类

  • DTD文档,后缀必须是.dtd,例如book.dtd,在需要编写的XML文件中导入该DTD约束文档< !DOCTYPE bookshelf SYSTEM “book.dtd”>,然后XML文件就必须按照DTD约束文档指定的格式进行编写,否则报错

    可以约束XML文件的编写,不能约束具体的数据类型

  • Schema文档,后缀必须是.xsd,可以约束XML文件的编写和数据类型

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

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

相关文章

基于51单片机烟雾温度检测报警系统设计

一、系统方案 本设计采用52单片机作为主控器&#xff0c;液晶1602显示&#xff0c;DS18B20采集温度&#xff0c;MQ2采集烟雾值&#xff0c;火焰传感器&#xff0c;按键设置报警&#xff0c;声光报警。 二、硬件设计 原理图如下&#xff1a; 三、单片机软件设计 1、首先是系…

MS-TTS:免费微软TTS语音合成工具(一键合成导出MP3音频)

声明 本工具是个免费工具&#xff0c;遇到问题&#xff0c;还请自行解决&#xff0c;下面有文字教程&#xff0c;B站有视频教程&#xff08;链接在文章末尾&#xff09;&#xff1b; 其次&#xff0c;微软接口卡顿&#xff0c;连接超时等问题下方有详细说明&#xff0c;请仔细…

视频怎么制作动图?分享简单的视频制作gif方法

现在的人们常用视频来记录自己的生活&#xff0c;但是视频的体积都会比较大&#xff0c;保存传输非常的不方便。我们可以将视频制作成gif动图来使用&#xff0c;而且gif动图也能将自己的心情想表达的想法通过这种个性的方式展示给对方。接下来&#xff0c;就给大家分享一款视频…

雅思 四处刷题的记录(一)

目录 阅读 九分达人7 test2 p2 听力 剑18 test1 section 1 剑18 test1 section 2 《九分达人》6 test3 section 1 and section 2 阅读 《九分达人》7 test2 passage1 词汇 Travelling的含义 town跟介词在一起的搭配 什么情况下使用on 大作文写作思路 当我们要使…

Python自动化测试(超详细~)

1. 概述 1.1 python自动化 什么是python自动化&#xff1f;我理解的Python自动化测试就是把以前人为测试转化为机器测试的一种过程。自动化测试是一种比手工测试更快获得故障反馈的方法。 自动化测试是一种质量保障的方式&#xff0c;最重要的还是以做好一款高质量产品为前提…

商用柴油车J1939油耗管理及北斗TBOX在物流运输中的应用

随着电商的兴起&#xff0c;网上购物的用户越来越多&#xff0c;网购、直播带货、精品电商等&#xff0c;促进了大量的物品流动&#xff0c;原本在一定程度上&#xff0c;物流管理上还有一些小混乱&#xff0c;但是随着监管和政策调整&#xff0c;物流互联数字平台对于货物流动…

deepstream6.2部署yolov5详细教程与代码解读

文章目录 引言一.环境安装1、yolov5环境安装2、deepstream环境安装 二、源码文件说明三.wts与cfg生成1、获得wts与cfg2、修改wts 四.libnvdsinfer_custom_impl_Yolo.so库生成五.修改配置文件六.运行demo 引言 DeepStream 是使用开源 GStreamer 框架构建的优化图形架构&#xf…

SAP FI之批量修改财务凭证的BAPI

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 一般涉及修改财务凭证&#xff0c;或者其它凭证&#xff0c;不应直接更新数据库&#xff0c;而是使用系统提供的function module,或者BAPI&#xff0c;或者使用BDC。 一、 示例&#xf…

《Effective STL》读书笔记(四):迭代器

iterator 优先于 const_iterator, reverse_iterator, const_reverse_iterator STL中所有标准容器都提供了标题提到的四种迭代器类型。对于容器container<T>而言&#xff0c;iterator类型相当于T*&#xff0c;const_iterator类型相当于const T*&#xff0c;剩下两个是反向…

XP小皮面板中的Mysql启动就停止,本地Mysql无法启动解决方法

前言&#xff1a; XP小皮面板中的mysql启动就停止&#xff0c;尝试查看很多方法无效&#xff0c;任务管理器mysql也尝试了先终止后启动&#xff0c;没反应... 解决方法 打开CMD&#xff0c;输入命令行 sc delete Mysql 这个命令是删除本地Mysql服务 然后再点开小皮的…

数学计算式转为表达式树

数据结构“栈”的一个用途就是&#xff1a;平衡符号&#xff0c;比如这样一个代数式&#xff1a;&#xff08;a(bc)*a(e*fa*(cd))&#xff09;,你能一眼看出这个式子的括号是否正确吗&#xff1f; 更何况还可以加入中括号&#xff08;[]&#xff09;,大括号&#xff08;{}&…

harmony应用签名

1. 随便搞个halloworld程序 2.生成私匙与证书请求文件 我就是key store file选择了一个文件夹&#xff0c;又不给任何提示&#xff0c;等我输入密码时才提示 填写图中内容即可&#xff0c;图中未填项可不填 点击完成即可

CPSE深圳充换电展开幕,飞凌嵌入式引领智能充储技术新潮流

9月6日&#xff0c;2023第六届深圳国际充电桩及换电站展览会&#xff08;简称&#xff1a;CPSE深圳充换电展&#xff09;在深圳会展中心&#xff08;福田&#xff09;开幕&#xff0c;飞凌嵌入式如期亮相&#xff0c;与来自全国的客户朋友及合作伙伴一同交流分享企业在智能充电…

WebDAV之π-Disk派盘 + 天悦日记

天悦日记是一款清爽简约的日记记录工具,通过天悦日记app随时随地快速写日记,更有智能数据统计分析报表,多端同步多种备份,本地备份和基于WebDAV协议的云端备份。跨平台使用,支持多设备、多平台无差别使用。天悦日记将每一天经历都清晰记录在手机,一目了然知道曾经的经历,…

StarRocks数据库FE——Catalog层

​仓外挂湖是指以 MPP 数据库为基础&#xff0c;使用可插拔架构&#xff0c;通过开放接口对接外部存储实现统一存储&#xff0c;在存储底层共享一份数据&#xff0c;计算、存储完全分离&#xff0c;实现从强管理到兼容开放存储和多引擎。实现方向为增加存储能力&#xff0c;提升…

Blender之锁定摄像机到视图方位

文章目录 当你在blender 中时&#xff0c;想要让你的摄像机跟随你的视图方位&#xff0c;以方便你的后期的制作&#xff0c;那应该怎么半&#xff1f; 先点击摄像机的图标&#xff0c;进入摄像机视图 然后按一下键盘的N 键&#xff0c;进入编辑模式&#xff0c;选择视图 最后…

【笔试强训选择题】Day34.习题(错题)解析

作者简介&#xff1a;大家好&#xff0c;我是未央&#xff1b; 博客首页&#xff1a;未央.303 系列专栏&#xff1a;笔试强训选择题 每日一句&#xff1a;人的一生&#xff0c;可以有所作为的时机只有一次&#xff0c;那就是现在&#xff01;&#xff01;&#xff01;&#xff…

蓝天转债,双良转债上市价格预测

蓝天转债111017 基本信息 转债名称&#xff1a;蓝天转债&#xff0c;评级&#xff1a;AA&#xff0c;发行规模&#xff1a;8.7亿元。 正股名称&#xff1a;蓝天燃气&#xff0c;今日收盘价&#xff1a;9.74元&#xff0c;转股价格&#xff1a;10.13元。 当前转股价值 转债面值…

阿里巴巴API接口解析,实现获得商品详情

要解析阿里巴巴API接口并实现获取商品详情&#xff0c;你需要按照以下步骤进行操作&#xff1a; 了解阿里巴巴开放平台&#xff1a;访问阿里巴巴开放平台&#xff0c;并了解相关的API文档、开发者指南和规定。注册开发者账号&#xff1a;在阿里巴巴开放平台上注册一个开发者账…

【Unity编辑器扩展】| Inspector监视器面板扩展

前言【Unity编辑器扩展】| Inspector监视器面板扩展一、ContextMenu和ContextMenuItem二、Custom Editors 自定义编辑器三、Property Drawer 属性绘制器总结前言 前面我们介绍了Unity中编辑器扩展的一些基本概念及基础知识,还有编辑器扩展中用到的相关特性Attribute介绍。后面…