目录
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:必填