您好,登錄后才能下訂單哦!
本篇內容主要講解“怎么用dom4j讀取xml配置文件”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么用dom4j讀取xml配置文件”吧!
實現步驟以及源碼:
1、寫xml文件讀取類讀取xml文檔內容返回Document對象,此處作為公共xml操作類,用于讀取和操作xml文檔內容。
點擊(此處)折疊或打開
package
util;
import
java.io.File;
import
java.io.FileWriter;
import
java.io.IOException;
import
java.io.InputStream;
import
java.io.StringReader;
import
java.net.URL;
import
org.apache.log4j.Logger;
import
org.dom4j.Document;
import
org.dom4j.DocumentException;
import
org.dom4j.io.OutputFormat;
import
org.dom4j.io.SAXReader;
import
org.dom4j.io.XMLWriter;
public
class
XMLHelper
{
private
static
Logger
logger=Logger.getLogger(XMLHelper.class);
/**
* 描述:讀取xml文件返回Docment對象
* @author vensins
* @created 2017年7月27日 下午5:22:17
* @since
* @param xmlFile
* xml文件file對象
* @return
*/
public
static
Document
getDocument(File
xmlFile){
try
{
SAXReader saxReader=new
SAXReader();
return
saxReader.read(xmlFile);
}
catch
(DocumentException e)
{
logger.error("讀取xml文件出錯,返回nulll",e);
return
null;
}
}
/**
* 描述:讀取xml文檔返回Document對象
* @author vensins
* @created 2017年7月27日 下午5:26:03
* @since
* @param xmlString
* xml文檔路徑
* @return
*/
public
static
Document
getDocument(String
xmlString){
try
{
if(xmlString==null||xmlString.equals(""))
return
null;
SAXReader saxReader=new
SAXReader();
File
file=new
File(xmlString);
return
saxReader.read(file);
}
catch
(DocumentException e)
{
logger.error("讀取xml文件失敗!",e);
return
null;
}
}
/**
* 描述:讀取xml文檔內容返回Document對象
* @author vensins
* @created 2017年7月27日 下午5:36:02
* @since
* @param xmlString
* @return
*/
public
static
Document
getDocumentFromString(String
xmlString){
try
{
if(xmlString==null||xmlString.equals(""))
return
null;
SAXReader saxReader=new
SAXReader();
return
saxReader.read(new
StringReader(xmlString));
}
catch
(DocumentException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return
null;
}
/**
* 描述:保存Document文檔到文件
* @author vensins
* @created 2017年7月27日 下午5:41:24
* @since
* @param document
* Document對象
* @param filePath
* 保存文件的路徑
* @param outputFormat
* 保存文件的格式(GBK,UTF-8)
* @return
*/
public
static
boolean
saveToFile(Document
document,String
filePath,OutputFormat outputFormat){
XMLWriter
writer;
File
file=new
File(filePath);
if(!file.exists()){
try
{
file.createNewFile();
if(!file.isDirectory())
return
false;
}
catch
(IOException
e)
{
logger.error("創建文件'"+filePath+"'失敗",e);
return
false;
}
}
try
{
writer=new
XMLWriter(new
FileWriter(new
File(filePath)));
writer.write(document);
writer.close();
return
true;
}
catch
(IOException
e)
{
logger.error("寫文件"+filePath+"'出錯",e);
}
return
false;
}
/**
* 描述:寫入DOcument對象到xml
* @author vensins
* @created 2017年7月27日 下午5:38:10
* @since
* @param filePath
* @param doc
* @return
*/
public
static
boolean
writeToXml(String
filePath,Document
doc){
OutputFormat
format=new
OutputFormat();
format.setEncoding("GBK");
if(saveToFile(doc,
filePath,
format))
return
true;
return
false;
}
/**
* 描述:指定位置讀取xml文件
* @author vensins
* @created 2017年7月27日 下午5:58:13
* @since
* @param cls
* @param XmlFile
* @return
*/
public
static
Document
getDocument(Class
cls,String
XmlFile){
Document
document
=
null;
ClassLoader
loader
=
cls.getClassLoader();
// 先從當前類所處路徑的根目錄中尋找屬性文件
File
f;
URL
url
=
loader.getResource(XmlFile);
if
(
url
!=
null
)
{
f
=
new
File(url.getPath());
if
(
f
!=
null
&&
f.exists()
&&
f.isFile()
)
{
document=XMLHelper.getDocument(f);
}else{
InputStream
ins=null;
try
{
if(loader!=null){
ins=loader.getResourceAsStream(XmlFile);
}
if(ins!=null){
SAXReader saxReader=new
SAXReader();
document=saxReader.read(ins);
}
}
catch
(DocumentException e)
{
logger.error("讀取xml文件'"+XmlFile+"'失敗",e);
}finally{
try
{
if(ins!=null){
ins.close();
ins=null;
}
}
catch
(IOException
e)
{
logger.error("",e);
}
}
}
}
return
document;
}
}
2、寫配置文件公共操作類,用于取配置文件中的配置信息
實現思路:對讀取的xml的document對象進行解析,以鍵值對的形式存入map對象,取配置值時通過鍵值對(父級配置項目.子級配置項)的形式取出對應的配置信息
點擊(此處)折疊或打開
package
util;
import
java.util.HashMap;
import
java.util.Iterator;
import
java.util.List;
import
java.util.Map;
import
org.apache.log4j.Logger;
import
org.dom4j.Document;
import
org.dom4j.Element;
public
class
Configuration
{
private
static
Logger
logger=Logger.getLogger(Configuration.class);
private
static
String
CONFIG_FILE_NAME="conf/configuration.xml";
private
static
Map
itemMap=new
HashMap();
static{
load_config();
}
private
static
void
load_config(){
try{
Document
document
=
XMLHelper.getDocument(Configuration.class,
CONFIG_FILE_NAME);
if(document!=null){
Element
element=document.getRootElement();
List
catList=element.elements("category");
for
(Iterator
catIter=catList.iterator();catIter.hasNext();)
{
Element
catElement=(Element)
catIter.next();
String
catName=catElement.attributeValue("name");
if(catName==null||catName.equals(""))
continue;
List
itemList=catElement.elements("item");
for
(Iterator
itemIter=itemList.iterator();itemIter.hasNext();)
{
Element
itemElement=(Element)
itemIter.next();
String
itemName=itemElement.attributeValue("name");
String
value=itemElement.attributeValue("value");
if
(itemName==null||itemName.equals(""))
continue;
itemMap.put(catName+"."+itemName,
value);
}
}
}
}catch(Exception
ex){
logger.error("讀取配置文件錯誤",ex);
}
}
/**
* 描述:獲取字符串配置值
* @author vensins
* @created 2017年7月28日 上午9:33:39
* @since
* @param name
* @return
*/
public
static
String
getString(String
name){
String
value=(String)
itemMap.get(name);
return
value==null?"":value;
}
/**
* 描述:獲取字符串配置值,為空時取默認值
* @author vensins
* @created 2017年7月28日 上午9:36:47
* @since
* @param name
* @param defaultValue
* @return
*/
public
static
String
getString(String
name,String
defaultValue){
String
value=(String)
itemMap.get(name);
return
value==null||value.equals("")?defaultValue:value;
}
/**
* 描述:獲取配置文件中的整數項配置
* @author vensins
* @created 2017年7月28日 上午9:41:49
* @since
* @param name
* @return
*/
public
static
int
getInt(String
name){
String
value=(String)
itemMap.get(name);
try
{
return
Integer.parseInt(value);
}
catch
(Exception
e)
{
logger.error("配置文件key["+name+"]配置錯誤,return 0",e);
return
0;
}
}
/**
* 描述:獲取配置文件中的整數項配置,錯誤是返回默認值
* @author vensins
* @created 2017年7月28日 上午9:43:12
* @since
* @param name
* @param defaultValue
* @return
*/
public
static
int
getInt(String
name,int
defaultValue){
String
value=(String)
itemMap.get(name);
try
{
return
Integer.parseInt(value);
}
catch
(Exception
e)
{
logger.error("配置文件key["+name+"]配置錯誤,返回默認值"+defaultValue,e);
return
defaultValue;
}
}
/**
* 描述:獲取配置文件中的boolean值
* @author vensins
* @created 2017年7月28日 上午9:46:29
* @since
* @param name
* @return
*/
public
static
boolean
getBoolean(String
name){
String
value=(String)
itemMap.get(name);
return
Boolean.valueOf(value).booleanValue();
}
/**
* 描述:獲取配置文件中的Double值
* @author vensins
* @created 2017年7月28日 上午9:51:24
* @since
* @param name
* @param defaultValue
* @return
*/
public
static
Double
getDouble(String
name,Double
defaultValue)
{
String
value=(String)
itemMap.get(name);
try
{
return
Double.parseDouble(value);
}
catch
(Exception
e)
{
logger.error("配置文件key["+name+"]配置錯誤,返回默認值"+defaultValue,e);
return
defaultValue;
}
}
public
static
Map
getItems(){
return
itemMap;
}
}
以下內容為xml文件的內容模板以及使用樣例
點擊(此處)折疊或打開
<?xml
version="1.0"
encoding="GBK"?>
<system>
<category name="test1"
description="配置信息二">
<item name="test1-1"
value="1"
description=""
/>
</category>
<category name="test2"
description="配置信息二">
<item name="test2-1"
value="0"
description=""
/>
<item name="test2-2"
value="12.4"
description=""
/>
<item name="test2-3"
value="啊啊啊"
description=""
/>
</category>
</system>
讀取時使用Configuration.getString("test1.test1-1")獲取 到配置值"1"
讀取時使用Configuration.getString("test2.test1-3")獲取 到配置值"啊啊啊"
到此,相信大家對“怎么用dom4j讀取xml配置文件”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。