特殊文件:XML文件,Properties属性文件【详解】

目录

1.Properties属性文件

2.特殊文件:XML文件       


1.Properties属性文件

        是一个Map集合(键值对集合),但是我们一般不会当集合使用。

        核心作用:Properties是用来代表属性文件的,通过Properties可以读写属性文件里的内容。

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

        

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

package com.itheima.day11.teacher.pp;import java.io.FileReader;
import java.util.Properties;
import java.util.Set;public class PropertiesDemo {/*掌握使用Properties集合类去读取属性文件中的键值对信息并完成解析。.properties结尾的文件 叫 属性文件 也叫配置文件。里面存储数据的特点1:键值对形式2: 键不重复3: 文件后缀名是.properties文件在开发中是来存储   配置信息的。比如 连接数据库的用户名密码等...在开发中是怎么去读取这种文件呢?因为键值对的 所以Java提供了一个类型 Properties去专门去完成这类文件信息的存储(读取)Properties是Map的集合一个子类。特殊的子类---里面设定了  一个 读取  和  写出  properties文件的功能*/public static void main(String[] args) throws Exception{//1:创建Properties对象 (键值对)Properties pp  = new Properties();System.out.println(pp);// 2: 使用load(输入流)功能,可以将流关联的文件中的 属性集信息 读取到 Properties中pp.load(new FileReader("day11\\src\\user.properties"));System.out.println(pp);//3:数据都读取到 pp集合中//获取键集//Set<Object> objects = pp.keySet();//使用父亲的方法 键的泛型是 ObjectSet<String> keys = pp.stringPropertyNames();//获取 键值对中所有的键  属性集中 属性的名字for (String key : keys) {//key 所有的键--- 属性的名字//    键对应的值  属性的值
//            Object o = pp.get(key);//使用父亲的方法 得到键是Object//  优化了一个方法String value = pp.getProperty(key);System.out.println(key+":"+value);}System.out.println("========================foreach遍历======");pp.forEach((k,v)-> System.out.println(k+":"+v));}
}-------------------
package com.itheima.day11.teacher.pp;import java.io.FileWriter;
import java.util.Properties;public class PropertiesDemo02 {/*目标掌握使用Properties 将集合数据写到一个 属性集文件中。*/public static void main(String[] args) throws Exception{//1:创建Properties对象  存储一些键值对数据。Properties pp = new Properties();// 可以使用父亲方法  可以用 但是不够精准
//        pp.put("",new Object());// 存都是字符串  自己 优化了方法  pp.setProperty(字符串键,字符串值)设置属性集pp.setProperty("李亚雷","张冠电");pp.setProperty("郭家琪","盆国歪");pp.setProperty("王振魁","卒衰瘦");//2:调用 store()功能 将集合数据写到指定文件中.pp.store(new FileWriter("day11\\src\\user2.properties"),"说明最好用英文 this is fanyici");}
}

2.特殊文件:XML文件       

        XML( 全称eXtensible Markup Language, 可扩展标记语言 )

        本质是一种数据的格式,可以用来存储复杂的数据结构和数据关系。

        1.XML的特点:

                1.XML中的“<标签名>” 称为一个标签或一个元素,一般是成对出现的。

                2.XML中的标签名可以自己定义(可扩展),但必须要正确的嵌套。

                3.XML中只能有一个根标签。

                4.XML中的标签可以有属性。

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

        2.XML的语法规则  

        

3.XML的作用和应用场景

        本质是一种数据格式,可以存储复杂的数据结构和数据关系。

        应用场景:经常用来做为系统的配置文件;或者作为一种特殊的数据结构,在网络中进行传输。

4.读取XML文件中的数据:使用Dom4J解析出XML文件

        1.核心思想:文档对象模型

    2.使用步骤

                1.下载Dom4j框架,官网下载,官网地址: https://dom4j.github.io/

                2.在项目中创建一个文件夹:lib

                3.将dom4j-2.1.3.jar文件复制到 lib 文件夹

                4.在jar文件上点右键,选择 Add as Library -> 点击OK

                5.在类中导包使用

   3.得到Document对象和根元素对象

4.Element提供的方法

        

package com.itheima.day11.teacher.parsexml;import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;import java.util.List;public class Demo {/*学习如何使用DOM4J技术解析xml文件以后我们如果用别的依赖jar包,就遵循别人提供的方式去玩 DOM4J!*/public static void main(String[] args) throws Exception{/*如何获取根元素1:创建DOM4J 核心读取对象 SAXReader()2:调用 read(被解析xml文件位置)方法 得到文档对象(一棵树)3:文档调用 getRootElement方法得到 根元素元素类型 Element*///1:创建DOM4J 核心读取对象 SAXReader()SAXReader saxReader = new SAXReader();//2:调用 read(被解析xml文件位置)方法 得到文档对象(一棵树)Document document = saxReader.read("day11\\src\\helloworld.xml");// document 树//3:文档调用 getRootElement方法得到 根元素Element rootElement = document.getRootElement();System.out.println(rootElement);System.out.println(rootElement.getName());/*Element方法学习getName() 获取当前元素的名字List<Element> elements() 获取当前元素(标签)的所有子元素List<Element> elements(String childName) 获取当前元素(标签)的指定名称的子元素*/// 4:获取 根元素下所有的子元素标签
//        List<Element> elements = rootElement.elements();//elements 根元素下的所有的子元素List<Element> elements = rootElement.elements("user");//elements 根元素下的所有的子元素System.out.println(elements.size());// 循环得到 每一个子元素标签for (Element element : elements) {System.out.println(element.getName());}System.out.println("======================");//根据名字  获取 people标签Element peopleE = rootElement.element("people");System.out.println("元素名字:"+peopleE.getName());//获取标签文本信息System.out.println("people元素的文本信息:"+peopleE.getText());// 根据名字  获取 user标签 如果获取单个 是第一个Element userE = rootElement.element("user");//  attributeValue(属性名)System.out.println("userE属性id:"+userE.attributeValue("id"));System.out.println("userE属性desc:"+userE.attributeValue("desc"));// 请解析出  userE 中 子标签的 的文本信息
//          userE.element("name").getText()//获取 userE 的name标签 的 文本信息// 获取指定子标签的文本信息System.out.println(userE.elementText("name"));System.out.println(userE.elementText("sex"));System.out.println(userE.elementText("地址"));System.out.println(userE.elementText("password"));System.out.println(userE.elementText("data"));System.out.println(userE.elementText("data1"));}
}

5.补充知识:约束XML文件的编写[了解]

        什么是XML文件的约束?

                就是限制XML文件只能按照某种格式进行书写。

        约束文档的分类

                DTD文档

                Schema文档

        1.DTD约束

students:根标签

student+:子标签,+是多个

最后一行name:student的属性名

2.Schema

        required:必填

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity中URP实现水体(水下的扭曲)

文章目录 前言一、使用一张法线纹理&#xff0c;作为水下扭曲的纹理1、在属性面板定义一个纹理&#xff0c;用于传入法线贴图2、在Pass中&#xff0c;定义对应的纹理和采样器3、在常量缓冲区&#xff0c;申明修改 Tilling 和 Offset 的ST4、在顶点着色器&#xff0c;计算得到 应…

conda 导出/导出配置好的虚拟环境

一. 导出环境配置&#xff08;yml文件&#xff09; 1. 在主目录下激活虚拟环境&#xff08;UE4是我的虚拟环境名称&#xff0c;请根据你自己的名称进行修改&#xff09; conda activate UE4 2. 运行此代码 conda env export > environment.yml 二. 导入环境配置&#xf…

IO 作业 24/2/26

1>思维导图 1> 使用消息队列完成两个进程间相互通信 #include<myhead.h> //定义一个消息类型 struct msgbuf {long mtype; //消息类型char mtext[1024]; //消息正文 }; //定义一个宏&#xff0c;表示消息正文大小 #define MSGSIZE sizeof(struct msgbuf…

网络编程中的read、write函数的三种返回值处理及readn和writen函数

read函数返回值为0&#xff0c;表示对端关闭。 write函数返回值为0&#xff0c;表示什么东西都没写。 比如&#xff1a;总共想读4096个字节&#xff0c;每次只发1500个字节&#xff0c;就需要读多次。 readn函数读一行&#xff0c;读到\n

MCU多核异构通信原理

摘要&#xff1a; 本文结合瑞萨RZ/G2L 多核处理器&#xff0c;给大家讲述一下多核异构设计及通信的原理。 随着电子技术的不断发展&#xff0c;以及市场需求的日益增长&#xff0c;嵌入式系统不仅要求执行复杂的控制任务&#xff0c;还需要实时地采集和处理数据。 为了满足这…

好用的伪原创工具有哪些?

伪原创工具哪个好用&#xff1f;在互联网时代&#xff0c;内容创作是一项至关重要的工作。然而&#xff0c;随着信息爆炸式增长&#xff0c;内容创作者们往往面临着时间和灵感的压力。为了解决这一难题&#xff0c;越来越多的人开始寻找伪原创工具&#xff0c;这些工具可以帮助…

数据安全策略

当您在第一线担负着确保公司的信息和系统尽可能免受风险的关键职责时&#xff0c;您的数据安全策略需要复杂且多层次。威胁可能有多种形式&#xff1a;恶意软件、黑客攻击、财务或信息盗窃、破坏、间谍活动&#xff0c;甚至是您信任的员工故意或无意的活动造成的。因此&#xf…

Linux第66步_linux字符设备驱动_挂载和卸载

1、了解linux中的驱动类型: 1)、字符设备驱动 字符设备是limnux驱动中最基本的一类设备驱动&#xff0c;字符设备就是一个一个字节&#xff0c;按照字节流进行读写操作的设备&#xff0c;读写数据是分先后顺序的。如&#xff1a;GPIO输入输出、UART、I2C、SPI、USB、LCD、音频…

获取tensorflow lite模型指定中间层的输出

以mobilenet v2为例子&#xff0c;我已经训练好了模型&#xff0c;有tflite格式和onnx格式两种模型的权重文件&#xff0c;我想获取tflite模型在推理阶段neck部分的输出。 查看onnx模型得到neck最后一层位置 使用netron查看onnx模型结构 从name中能知道Reshape是neck的最后一…

HTTP---------状态码

当服务端返回 HTTP 响应时&#xff0c;会带有一个状态码&#xff0c;用于表示特定的请求结果。比如 HTTP/1.1 200 OK&#xff0c;里面的 HTTP/1.1 表示协议版本&#xff0c;200 则是状态码&#xff0c;OK 则是对状态码的描述。 由协议版本、状态码、描述信息组成的行被称为起始…

Spring ReflectionUtils 反射工具介绍和使用

一、ReflectionUtils 在 Java 中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时动态地检查类、获取类的信息、调用类的方法、访问或修改类的属性等。Java 的反射机制提供了一组类和接口&#xff0c;位于 java.lang.reflect…

记录一些mac电脑重装mysql和pgsql的坑

为什么要重装,是想在mac电脑 创建data目录…同事误操作,导致电脑重启不了.然后重装系统后,.就连不上数据库了.mysql和pgsql两个都连不上.网上也查了很多资料.实在不行,.就重装了… 重装mysql. 1.官网下载 https://www.mysql.com/downloads/ 滑到最下面 选择 选择对应的芯片版本…