Java中的Properties类主要用于处理配置信息,除了支持加载普通的键值对properties文件外,还提供了loadFromXML方法,可以直接读取符合规范的XML格式配置内容,让配置存储更灵活。

XML配置文件的格式要求
使用loadFromXML方法加载的XML文件需要遵循特定的格式规范,根节点必须是<properties>,内部通过<entry>标签存储键值对,同时需要声明正确的XML编码和DOCTYPE。标准的XML配置文件示例如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<entry key="db_host">127.0.0.1</entry>
<entry key="db_port">3306</entry>
<entry key="app_name">测试应用</entry>
</properties>
loadFromXML方法的基本使用步骤
使用loadFromXML加载XML配置的核心步骤分为三步:创建Properties实例、获取XML文件的输入流、调用loadFromXML方法完成加载,之后就可以通过getProperty方法获取对应的配置值。
基础使用示例
假设上述XML文件保存在项目的config目录下,文件名为app_config.xml,加载配置的代码如下:
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
public class PropertiesXmlDemo {
public static void main(String[] args) {
Properties props = new Properties();
// 创建文件输入流指向XML配置文件
try (FileInputStream fis = new FileInputStream("config/app_config.xml")) {
// 调用loadFromXML方法加载配置
props.loadFromXML(fis);
// 获取配置值
String dbHost = props.getProperty("db_host");
String dbPort = props.getProperty("db_port");
String appName = props.getProperty("app_name");
System.out.println("数据库地址:" + dbHost);
System.out.println("数据库端口:" + dbPort);
System.out.println("应用名称:" + appName);
} catch (IOException e) {
e.printStackTrace();
}
}
}
从类路径加载XML配置
实际开发中更常见的是将配置文件放在类路径下,此时可以通过类加载器获取输入流,避免硬编码文件路径:
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class PropertiesXmlClassPathDemo {
public static void main(String[] args) {
Properties props = new Properties();
// 通过类加载器获取类路径下的XML文件输入流
try (InputStream is = PropertiesXmlClassPathDemo.class.getClassLoader()
.getResourceAsStream("app_config.xml")) {
if (is == null) {
System.out.println("未找到配置文件");
return;
}
props.loadFromXML(is);
System.out.println("应用名称:" + props.getProperty("app_name"));
} catch (IOException e) {
e.printStackTrace();
}
}
}
常见注意事项
- XML文件的编码需要和声明的一致,通常建议使用UTF-8编码,避免出现中文乱码问题。
- loadFromXML方法只能读取符合Properties DTD规范的XML文件,自定义的XML结构无法被正确解析。
- 如果XML文件中存在重复的key,后面出现的<entry>会覆盖前面的同名配置值。
- 方法会抛出IOException,实际使用时需要做好异常处理,避免程序崩溃。
与storeToXML方法配合使用
Properties类还提供了storeToXML方法,可以将内存中的配置信息导出为XML格式,和loadFromXML方法配合使用可以完成配置的读写闭环:
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
public class PropertiesStoreXmlDemo {
public static void main(String[] args) {
Properties props = new Properties();
props.setProperty("username", "admin");
props.setProperty("password", "123456");
props.setProperty("max_conn", "10");
// 将配置导出为XML文件,指定编码和注释
try (FileOutputStream fos = new FileOutputStream("new_config.xml")) {
props.storeToXML(fos, "应用配置信息", "UTF-8");
System.out.println("配置导出成功");
} catch (IOException e) {
e.printStackTrace();
}
}
}
通过上述方法生成的XML文件可以直接被loadFromXML方法加载,方便配置的持久化存储和读取。
PropertiesloadFromXMLXML配置Java配置存储修改时间:2026-06-28 19:57:24