读取property文件中的数据
public static void main(String[] args) throws IOException {
//此时pro里面为空
Properties pro = new Properties();
//使用load方法,就将属性文件加载了进来,此时如果打印pro,则会显示配置文件里面的数据
pro.load(new FileReader("day0826\\Uerses.properties"));
//使用getProperty方法获取key的值
String value = pro.getProperty("赵四");
//遍历pro里面的所有键对值
//这个方法是获取所有的key
Set<String> set = pro.stringPropertyNames();
for (String key : set) {
//使用key调取value
String v = pro.getProperty(key);
System.out.println("key: "+ key +"---> value: " + v);
}
//使用forEach方法遍历(map提供的);
pro.forEach((k , v ) -> {
System.out.println("key: "+ k +"---> value: " + v);
});
-------------------------------------------------------------------------
把数据写入property文件
public static void main(String[] args) throws IOException {
//把一些键值对信息写到配置文件中去
Properties pro = new Properties();
//设置要保存的信息;
pro.setProperty("张三","zhangsan");
pro.setProperty("赵四","zhaosi");
pro.setProperty("王五","wangwu");
pro.setProperty("李四","lisi");
//调用store方法,执行保存操作。 store是保存的意思,comments:是你要写入的注释;
pro.store(new FileWriter("day0826\\Uerses2.properties"),"");
}
-------------------------------------------------------------------------
/**
* 一个案例,是用来修改指定属性的值的,这里是把配置文件中的张三的值改为18
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
//创建一个加载properties配置文件的map
Properties pro = new Properties();
//把配置文件加载进来
pro.load(new FileReader("day0826\\Uerses2.properties"));
//查找又没有什么键的数据时,不需要遍历,直接获取他的值,看看是否为null,如果时null,说明不存在;
if (pro.getProperty("张三") != null) {
pro.setProperty("张三","18");
}
//点击保存
pro.store(new FileWriter("day0826\\Uerses2.properties"),"修改了");
}
Properties文件详解:
- 读取或写入时可以使用实现map接口的Properties类进行解析;
- Properties文件里面都是存储的键值对,
XML文件详解
把XML文件展示出来:空白处右击选择openin,选择浏览器即可
XML文件解析框架:DOM4J ,下载地址https://dom4j.github.io/
注意,element解析时只能从上而下的操作。先解析根元素,然后根据根元素来进行再获取子元素或者获取属性等操作;
public static void main(String[] args) throws DocumentException {
//总之解析XML有两个类需要活用:Element,Attribute
//解析xml文件:思路,使用第三方提供的Dom4J框架来解析xml
//使用提供的SaxReader的read方法来将xml读取为Document对象
SAXReader saxReader = new SAXReader();
Document document = saxReader.read("day0830\\src\\XMLFileDemo.xml");
//使用Document中的getRootElement()方法,获取element对象。
// 注意XML文件解析必须从上往下解析
Element rootElement = document.getRootElement();
//使用根标签element来获取他的所有子标签
List<Element> elements = rootElement.elements();
//可以遍历并使用Element提供的getName()方法获取他们的名字;
//获取到Element之后,就可以使用element中的方法了
for (Element e : elements) {
System.out.println(e.getName());
}
//获取指定的标签
Element popularElement = rootElement.element("popular");
//获取popular标签下的name标签的值
String name = popularElement.elementText("name");
//获取所有user的标签集合。
/*List<Element> userList = rootElement.elements("user");
for (Element e : userList) {
System.out.println(e.elementText("name"));
}*/
//要获取id为2的user标签的name属性
//思路:先获取到所有的user标签,然后在获取Attribute对象,判断他的value()
//自己想的;
List<Element> user = rootElement.elements("user");
for (Element u : user) {
Attribute idAttr = u.attribute("id");
if (null != idAttr){
if ("2".equals(idAttr.getValue())) {
System.out.println(u.elementText("name"));
}
}
}
}
EML文件的写入
public static void main(String[] args) {
//<?xml version = "1.0" encoding = "utf-8" ?>
//<users>
// <user id="2">
// <name>赵四</name>
// <age>18</age>
// <date>
// <![CDATA[
// ]]>
// </date>
// </user>
//</users>
//把上面这段xml文件写出到xml文件中去
//思路、不适用DOM4J,因为据说比较麻烦,直接使用io流即可
StringBuilder str = new StringBuilder();
str.append("<?xml version = \"1.0\" encoding = \"utf-8\" ?>");
str.append("\t<users>\r\n");
str.append("\t<user id=\"2\"> \r\n");
str.append("\t\t<name>赵四</name> \r\n").append("\t\t<age>18</age>\r\n");
str.append("\t</user>\r\n");
str.append("</users>\r\n");
//调用一个字符输出流
try (
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("day0830\\src\\XMLFileDemo2.xml"))
){
//bufferedWriter.write要的是String,而不是StringBuilder,需要转换;
bufferedWriter.write(str.toString());
}catch (IOException e){
e.printStackTrace();
}
}
XML约束文件
XML约束文档(XML Schema文档、DTD文档)通常用来定义和验证XML文档的结构和内容。有两种主要的XML约束文档类型:
-
XML Schema (XSD):XML Schema是一种XML约束语言,用于定义XML文档的结构、元素、属性、数据类型以及元素之间的关系。XML Schema通常以
.xsd
文件扩展名保存。它提供了更丰富和强大的约束能力,支持数据类型验证和复杂的元素结构定义。 -
Document Type Definition (DTD):DTD是一种较早的XML约束语言,用于定义XML文档的结构和验证规则。DTD通常以
.dtd
文件扩展名保存。它的能力相对有限,不支持复杂的数据类型验证,但对于简单的文档结构定义仍然很有用。
简单来讲,XSD与DTD的区别在于,DTD只会约束你里面是什么样的标签,不能约束每个标签里面值的类型等细节,但是XSD可以。