import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.XMLConfiguration;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.commons.configuration.FileConfiguration;
import org.apache.commons.configuration.reloading.FileChangedReloadingStrategy;
/**
* The class is used to parse config file(eg: *.xml file, *.properties file).
* This class is a singleton class, you can use the method newInstance to get
* an instance.
*
* @author Everest 07/09/2009
* @since 1.0
*
*/
public class ConfigUtil {
/** the default xml file to initializer */
private static final String DEFAULT_XML = "everest.xml";
private FileConfiguration config = null;
private static ConfigUtil instance = null;
private ConfigUtil(String configFile) throws ConfigurationException {
if ((config == null) && (configFile.toLowerCase().endsWith(".xml"))) {
config = new XMLConfiguration(configFile);
} else if (configFile.toLowerCase().endsWith("properties")) {
config = new PropertiesConfiguration(configFile);
} else {
config = new XMLConfiguration(DEFAULT_XML);
}
config.setReloadingStrategy(new FileChangedReloadingStrategy());
}
/**
* The method is used to get an instance of ConfigUtil
*
* @param configFile the file will be parsed
* @return An instance of ConfigUtil
* @throws Exception
*/
public static ConfigUtil newInstance(String configFile) throws Exception {
if (instance == null) {
try {
instance = new ConfigUtil(configFile);
} catch (ConfigurationException e) {
throw new Exception("The file:[" + configFile
+ "] can't be parsed", e);
}
}
return instance;
}
/**
* The method is used to return a single value
*
* @param exp what you want to get(XPath Expression)
* @return
*/
public String selectValue(String exp) {
return config.getString(exp);
}
/**
*
* @param exp
* @return
*/
public String[] selectValues(String exp) {
return config.getStringArray(exp);
}
/**public static void main(String[] args) {
try {
ConfigUtil cu = newInstance("everest.xml");
String serv = cu.selectValue("server.ip");
String ip = cu.selectValue("server.port");
System.out.println(serv+":"+ip);
} catch (Exception e) {
e.printStackTrace();
}
}*/
}
示例xml文件:everest.xml
<?xml version="1.0" encoding="utf-8"?>
<everest>
<server>
<ip>192.168.0.1</ip>
<port>8080</port>
</server>
</everest>
注:附件中是需要的相关jar包,需要加到项目的配置路径下
分享到:
相关推荐
本文主要讲解了 Java 中如何读取 XML 配置文件,并对 XML 解析器进行了分类,分别介绍了 DOM 和 SAX 两种解析方式的特点和使用场景,并提供了一个使用 SAX 解析器读取 XML 配置文件的示例程序。 在 Java 开发中,...
Java解析XML配置文件是开发过程中常见的一项任务,特别是在基于Java的框架中,如Spring,大量使用XML文件来存储配置信息。DOM4J是Java中一个非常流行且功能强大的XML处理库,它提供了丰富的API用于读取、写入、修改...
在Java开发中,解析Excel和XML配置文件是常见的任务,特别是在构建可配置系统或处理数据导入导出时。Spring框架的出现,使得这项工作变得更加简便。本Demo将演示如何使用Java来解析Excel和XML配置文件,并基于这些...
4. STM32解析XML文件:这可能是包含示例代码或实际实现XML解析的工程文件,可能包括C或C++源码,用于在STM32上读取、解析和处理XML数据。可能涉及的函数有XML解析初始化、节点遍历、数据提取等。 在STM32上解析XML...
JS 解析 XML 文件 作为一名 IT 行业大师,我将从给定的...使用 JavaScript 解析 XML 文件需要了解 XML 文档的结构和各个节点的类型,选择合适的解析方法,考虑浏览器兼容性问题,并掌握相关的 JavaScript 语法和方法。
本文将深入探讨如何使用SAX、DOM和Pull解析器解析XML文件,以及如何生成XML文件。我们将同时展示Java和Kotlin两种语言的实现方法。 一、SAX解析XML文件 SAX(Simple API for XML)是一种事件驱动的解析器,它不会一...
XML作为一种结构化数据存储和交换格式,广泛应用于网络通信、配置文件、数据存储等多个场景。在易语言中,学习XML解析有助于开发者有效地读取、写入和处理XML文档,实现数据的存取和应用。 易语言XML解析主要涉及到...
在Python中解析XML文件是一种常见的需求,特别是在处理配置文件、数据交换格式以及其他需要结构化数据的应用场景中。本文将详细介绍如何使用两种流行的方法——`MiniDom`和`ElementTree`来解析XML文件。 #### 1. ...
`XmlConfigRead`可能是项目中的一个类,负责读取和解析XML配置文件。它可能包含如下的方法: ```csharp public class XmlConfigRead { public List<ControlInfo> ParseConfig(string filePath) { // 读取XML文件...
在许多现代嵌入式应用中,数据交换和配置文件通常采用XML(eXtensible Markup Language)格式,因为XML提供了结构化数据的描述方式,便于人机交互和跨平台传输。然而,由于资源限制,STM32往往没有内置专门用于XML...
读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好。 TinyXML是一个开源的解析XML的解析库,能够用于C++,...
通过以上步骤和知识点,开发者能够在PowerBuilder环境中有效地读取、解析、操作和保存XML数据,实现数据交换和处理的需求。在实际项目中,还需要结合具体的业务逻辑和需求进行相应的设计和编程。
XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于配置文件、数据交换、存储结构化数据等场景。TinyXML-2(通常简称为tinyxml2)是一个轻量级的C++库,专门设计用来解析和操作XML文档。这个库...
以下是使用Kettle批量解析XML文件并导入到Oracle数据库的基本步骤和相关知识点: 1. **创建Kettle转换**:在Kettle中,首先需要创建一个转换。转换定义了数据从源到目标的流动路径,包括读取、转换和写入操作。 2....
关于解析xml文件的,很有用的东东关于解析xml文件的,很有用的东东关于解析xml文件的,很有用的东东关于解析xml文件的,很有用的东东关于解析xml文件的,很有用的东东关于解析xml文件的,很有用的东东关于解析xml...
- **Ajax请求**:通过XMLHttpRequest或fetch API,可以获取XML文件并自动进行解码,然后使用DOMParser解析响应数据。 6. **XML与JSON的比较** - 虽然XML在早期Web开发中广泛使用,但现在JSON(JavaScript Object ...
在STM32这样的微控制器上解析XML文件,可以使得嵌入式系统具备更强的数据处理能力。 STM32F107是一款高性能、低成本的STM32系列微控制器,具有浮点运算单元(FPU),支持USB OTG和CAN接口,适用于各种工业和消费类...
本示例主要展示了如何在LabVIEW中实现XML文件的加载、保存和解析。 首先,我们来看XML加载的功能。在LabVIEW中,你可以使用内置的XML函数库来读取XML文件。这些函数通常包括“打开XML文件”和“解析XML文档”。通过...
kettle 解析xml数据,xml多层分组嵌套,xml stax方法,完整解析案例使用(包含xml文件以及ktr文件)。ETL大数据迁移,数据清洗。XML Input Stream (StAX) 方法