【XML配置文件读取】使用jdom读取XML配置文件信息
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了【XML配置文件读取】使用jdom读取XML配置文件信息,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含13026字,纯文字阅读大概需要19分钟。
内容图文
配置文件信息
<? xml version = "1.0" encoding = "UTF-8" ?>
<config>
<base-config>
<stringValue> Hello world </stringValue>
<integerValue> 8 </integerValue>
<longValue> 32768 </longValue>
</base-config>
<books>
<book id = "111" >
<name> Java 编程 </name>
<price> 33 </price>
</book>
<book id = "222" >
<name> Spring学习指南 </name>
<price> 55 </price>
</book>
</books>
<computers>
<computer type = "dell" size = "14寸" />
<computer type = "thinkpad" size = "16寸" />
<computer type = "apple" size = "22寸" />
</computers>
</config>
需要的Jar包(MAVEN给出)
完整的POM文件
< project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns : xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi : schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" >
< modelVersion > 4.0 . 0 </ modelVersion >
< groupId > com . ll </ groupId >
< artifactId > myThreadStudy </ artifactId >
< version > 0.0 . 1 - SNAPSHOT </ version >
< packaging > jar </ packaging >
< name > myThreadStudy </ name >
< url > http : //maven.apache.org</url>
< properties >
< project . build . sourceEncoding > UTF - 8 </ project . build . sourceEncoding >
< junitVersion > 3.8 . 1 </ junitVersion >
< commons - io - Version > 2.4 </ commons - io - Version >
< jaxenVersion > 1.1 . 1 </ jaxenVersion >
< jdomVersion > 1.1 </ jdomVersion >
< log4jVersion > 1.2 . 17 </ log4jVersion >
</ properties >
< dependencies >
< dependency >
< groupId > junit </ groupId >
< artifactId > junit </ artifactId >
< version > $ { junitVersion }</ version >
< scope > test </ scope >
</ dependency >
< dependency >
< groupId > commons - io </ groupId >
< artifactId > commons - io </ artifactId >
< version > $ { commons - io - Version }</ version >
</ dependency >
< dependency >
< groupId > org . jdom </ groupId >
< artifactId > jdom </ artifactId >
< version > $ { jdomVersion }</ version >
</ dependency >
< dependency >
< groupId > log4j </ groupId >
< artifactId > log4j </ artifactId >
< version > $ { log4jVersion }</ version >
</ dependency >
< dependency >
< groupId > jaxen </ groupId >
< artifactId > jaxen </ artifactId >
< version > $ { jaxenVersion }</ version >
</ dependency >
</ dependencies >
< build >
< defaultGoal > install </ defaultGoal >
< plugins >
< plugin >
< groupId > org . apache . maven . plugins </ groupId >
< artifactId > maven - compiler - plugin </ artifactId >
< version > 2.5 . 1 </ version >
< configuration >
< source > 1.7 </ source >
< target > 1.7 </ target >
< encoding > UTF - 8 </ encoding > <!-- “编码 GBK 的不可映射字符”问题的解决 -->
</ configuration >
</ plugin >
</ plugins >
</ build >
</ project >
通用的XML操作类(XMLOperatorUtils.java)
package com . ll . myThreadStudy . MyThread ;
import java . util . List ;
import org . jdom . Element ;
import org . jdom . JDOMException ;
import org . jdom . xpath . XPath ;
public class XMLOperatorUtils {
public static String getElementAttributeStringValue ( Element element ,
String AttributeName ) {
try {
return element . getAttributeValue ( AttributeName );
} catch ( Exception e ) {
return null ;
}
}
public static Integer getElementAttributeIntegerValue ( Element element ,
String AttributeName ) {
try {
return Integer . parseInt ( getElementAttributeStringValue ( element ,
AttributeName ));
} catch ( Exception e ) {
return - 1 ;
}
}
public static Long getElementAttributeLongValue ( Element element ,
String AttributeName ) {
try {
return Long . parseLong ( getElementAttributeStringValue ( element ,
AttributeName ));
} catch ( Exception e ) {
return - 1l ;
}
}
public static Boolean getElementAttributeBooleanValue ( Element element ,
String AttributeName ) {
try {
return Boolean . parseBoolean ( getElementAttributeStringValue ( element ,
AttributeName ));
} catch ( Exception e ) {
return false ;
}
}
public static String getElementTextStringValueFromRoot ( Element rootEle ,
String path ) {
try {
return (( Element ) getSingleNode ( rootEle , path )). getTextTrim ();
} catch ( Exception e ) {
return null ;
}
}
public static Integer getElementTextIntegerValueFromRoot ( Element rootEle ,
String path ) {
try {
return Integer . parseInt ( getElementTextStringValueFromRoot ( rootEle ,
path ));
} catch ( Exception e ) {
return - 1 ;
}
}
public static Long getElementTextLongValueFromRoot ( Element rootEle ,
String path ) {
try {
return Long . parseLong ( getElementTextStringValueFromRoot ( rootEle ,
path ));
} catch ( Exception e ) {
return - 1l ;
}
}
public static Boolean getElementTextBooleanValueFromRoot ( Element rootEle ,
String path ) {
try {
return Boolean . parseBoolean ( getElementTextStringValueFromRoot (
rootEle , path ));
} catch ( Exception e ) {
return false ;
}
}
public static String getElementTextStringValueByElement ( Element element ,
String childName ) {
try {
return element . getChildText ( childName );
} catch ( Exception e ) {
return null ;
}
}
protected static Integer getElementTextIntegerValueByElement (
Element element , String childName ) {
try {
return Integer . parseInt ( getElementTextStringValueByElement ( element ,
childName ));
} catch ( Exception e ) {
return - 1 ;
}
}
protected static Long getElementTextLongValueByElement ( Element element ,
String childName ) {
try {
return Long . parseLong ( getElementTextStringValueByElement ( element ,
childName ));
} catch ( Exception e ) {
return - 1l ;
}
}
protected static Boolean getElementTextBooleanValueByElement (
Element element , String childName ) {
try {
return Boolean . parseBoolean ( getElementTextStringValueByElement (
element , childName ));
} catch ( Exception e ) {
return false ;
}
}
protected static Object getSingleNode ( Element rootEle , String path )
throws JDOMException {
return XPath . selectSingleNode ( rootEle , path );
}
@SuppressWarnings ( "rawtypes" )
protected static List getNodes ( Element rootEle , String path )
throws JDOMException {
return XPath . selectNodes ( rootEle , path );
}
}
读取配置文件到Java POJO
package com . ll . myThreadStudy . MyThread ;
import java . io . File ;
import java . util . ArrayList ;
import java . util . HashMap ;
import java . util . List ;
import org . apache . log4j . Logger ;
import org . jdom . Element ;
import org . jdom . input . SAXBuilder ;
import org . jdom . xpath . XPath ;
public class XmlToConfigVO {
private static Logger logger = Logger . getLogger ( XmlToConfigVO . class );
public static MyConfigVo getLogSystemConfigVO ( String fileName ) {
try {
Element rootEle = new SAXBuilder (). build ( new File ( fileName ))
. getRootElement ();
MyConfigVo myConfigVo = new MyConfigVo ();
//获取单个节点值的内容
myConfigVo . setStringValue ( XMLOperatorUtils
. getElementTextStringValueFromRoot ( rootEle ,
"/config/base-config/stringValue" ));
myConfigVo . setIntegerValue ( XMLOperatorUtils
. getElementTextIntegerValueFromRoot ( rootEle ,
"/config/base-config/integerValue" ));
myConfigVo . setLongValue ( XMLOperatorUtils
. getElementTextLongValueFromRoot ( rootEle ,
"/config/base-config/longValue" ));
//获取多个节点值
HashMap < Integer , BookVo > booksMap = new HashMap < Integer , BookVo >();
for ( Object element : XPath . selectNodes ( rootEle , "/config/books/book" )) {
BookVo book = new BookVo ();
book . setId ( XMLOperatorUtils . getElementAttributeIntegerValue (( Element ) element , "id" ));
book . setName ( XMLOperatorUtils . getElementTextStringValueByElement (( Element ) element , "name" ));
book . setPrice ( XMLOperatorUtils . getElementTextLongValueByElement (( Element ) element , "price" ));
booksMap . put ( book . getId (), book );
}
myConfigVo . setBooksMap ( booksMap );
List < ComputerVo > computerList = new ArrayList < ComputerVo >();
for ( Object element : XPath . selectNodes ( rootEle , "/config/computers/computer" )) {
ComputerVo computer = new ComputerVo ();
computer . setType ( XMLOperatorUtils . getElementAttributeStringValue (( Element ) element , "type" ));
computer . setSize ( XMLOperatorUtils . getElementAttributeStringValue (( Element ) element , "size" ));
computerList . add ( computer );
}
myConfigVo . setComputerList ( computerList );
return myConfigVo ;
} catch ( Exception e ) {
logger . error ( e );
}
return null ;
}
}
完整程序
package com . ll . myThreadStudy . MyThread ;
import java . util . ArrayList ;
import java . util . HashMap ;
import java . util . List ;
public class MyConfigVo {
private String stringValue ;
private Integer integerValue ;
private Long longValue ;
private HashMap < Integer , BookVo > booksMap = new HashMap < Integer , BookVo >();
private List < ComputerVo > computerList = new ArrayList < ComputerVo >();
public String getStringValue () {
return stringValue ;
}
public void setStringValue ( String stringValue ) {
this . stringValue = stringValue ;
}
public Integer getIntegerValue () {
return integerValue ;
}
public void setIntegerValue ( Integer integerValue ) {
this . integerValue = integerValue ;
}
public Long getLongValue () {
return longValue ;
}
public void setLongValue ( Long longValue ) {
this . longValue = longValue ;
}
public HashMap < Integer , BookVo > getBooksMap () {
return booksMap ;
}
public void setBooksMap ( HashMap < Integer , BookVo > booksMap ) {
this . booksMap = booksMap ;
}
public List < ComputerVo > getComputerList () {
return computerList ;
}
public void setComputerList ( List < ComputerVo > computerList ) {
this . computerList = computerList ;
}
@Override
public int hashCode () {
final int prime = 31 ;
int result = 1 ;
result = prime * result
+ (( booksMap == null ) ? 0 : booksMap . hashCode ());
result = prime * result
+ (( computerList == null ) ? 0 : computerList . hashCode ());
result = prime * result
+ (( integerValue == null ) ? 0 : integerValue . hashCode ());
result = prime * result
+ (( longValue == null ) ? 0 : longValue . hashCode ());
result = prime * result
+ (( stringValue == null ) ? 0 : stringValue . hashCode ());
return result ;
}
@Override
public String toString () {
return "MyConfigVo [stringValue=" + stringValue + ", integerValue="
+ integerValue + ", longValue=" + longValue + ", booksMap="
+ booksMap + ", computerList=" + computerList + "]" ;
}
@Override
public boolean equals ( Object obj ) {
if ( this == obj )
return true ;
if ( obj == null )
return false ;
if ( getClass () != obj . getClass ())
return false ;
MyConfigVo other = ( MyConfigVo ) obj ;
if ( booksMap == null ) {
if ( other . booksMap != null )
return false ;
} else if (! booksMap . equals ( other . booksMap ))
return false ;
if ( computerList == null ) {
if ( other . computerList != null )
return false ;
} else if (! computerList . equals ( other . computerList ))
return false ;
if ( integerValue == null ) {
if ( other . integerValue != null )
return false ;
} else if (! integerValue . equals ( other . integerValue ))
return false ;
if ( longValue == null ) {
if ( other . longValue != null )
return false ;
} else if (! longValue . equals ( other . longValue ))
return false ;
if ( stringValue == null ) {
if ( other . stringValue != null )
return false ;
} else if (! stringValue . equals ( other . stringValue ))
return false ;
return true ;
}
}
package com . ll . myThreadStudy . MyThread ;
public class ComputerVo {
private String type ;
private String size ;
public String getType () {
return type ;
}
public void setType ( String type ) {
this . type = type ;
}
public String getSize () {
return size ;
}
public void setSize ( String size ) {
this . size = size ;
}
@Override
public String toString () {
return "ComputerVo [type=" + type + ", size=" + size + "]" ;
}
}
package com . ll . myThreadStudy . MyThread ;
public class BookVo {
private Integer id ;
private String name ;
private Long price ;
public Integer getId () {
return id ;
}
public void setId ( Integer id ) {
this . id = id ;
}
public String getName () {
return name ;
}
public void setName ( String name ) {
this . name = name ;
}
public Long getPrice () {
return price ;
}
public void setPrice ( Long price ) {
this . price = price ;
}
@Override
public String toString () {
return "BookVo [, name=" + name + ", price=" + price + "]" ;
}
}
测试文件
package com . ll . myThreadStudy . MyThread ;
public class Main {
public static void main ( String args []) {
MyConfigVo myConfigVo = XmlToConfigVO . getLogSystemConfigVO ( "d:\\myConfig.xml" );
System . out . println ( myConfigVo );
}
}
测试结果
附件列表
原文:http://www.cnblogs.com/ssslinppp/p/4954451.html
内容总结
以上是互联网集市为您收集整理的【XML配置文件读取】使用jdom读取XML配置文件信息全部内容,希望文章能够帮你解决【XML配置文件读取】使用jdom读取XML配置文件信息所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。