附件为相应的代码及配置文件
1、使用的jar包: jdom.jar xerces.jar log4j-1.2.8.jar
2、log4j.properties
#error/warn/info/debug#
log4j.rootLogger=warn, stdout
#log4j.rootLogger=warn, stdout, file
#to console#
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
#log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %l - %m%n
log4j.appender.stdout.layout.ConversionPattern=%r %d{yyyy-MM-dd HH:mm:ss} [%p] -%l -%n -%m%n
log4j.logger.java.sql.Connection=debug
log4j.logger.java.sql.Statement=debug
log4j.logger.java.sql.PreparedStatement=DEBUG
#to file#
# 文件大小到达指定尺寸的时候产生新文件
#log4j.appender.file=org.apache.log4j.RollingFileAppender
#log4j.appender.file.Append=true
#log4j.appender.R.Threshold=info
#log4j.appender.file.File=${webApp.root}/WEB-INF/logs/app.log
#
#log4j.appender.file.MaxFileSize=1024KB
#log4j.appender.file.MaxBackupIndex=100
#log4j.appender.file.layout=org.apache.log4j.PatternLayout
#log4j.appender.file.layout.ConversionPattern=%r %d{yyyy-MM-dd HH:mm:ss} [%p] -%l -%n -%m%n
# 那些包路径需要打印日志
log4j.category.com.java=debug
#log4j.category.com.iss.test=debug
3、sms.xml
<?xml version="1.0" encoding="UTF-8"?> <req> <sp_id>qidi</sp_id> <sp_pwd>qidi123</sp_pwd> <phone>15902843301</phone> <content>短信内容</content> <time_stamp>201203281726</time_stamp> <sender>106586282010</sender> <serviceId>family</serviceId> </req>
4、实体类
/**
* @ClassName: SMSBean
* @Description: 短信内容
* @author
* @date 2012-5-9 上午9:37:17
* @version V1.0
*/
public class SMSBean {
/** 服务提供商ID */
private String spID;
/** 服务提供商密码 */
private String spPWD;
/** 下发手机号(发送人手机号) */
private String phone;
/** 短信内容 */
private String content;
/** 下发时间(yyyyMMddHHmmss) */
private String timeStamp;
/** 下发端口 */
private String sendPort;
/** 业务代码 */
private String serviceID;
// 省略getter/setter 方法
}
5、解析方法
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import org.apache.log4j.Logger;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
/**
* @ClassName: XMLMethods
* @Description: XML文件操作类
* @author
* @date 2012-5-9 上午9:36:23
* @version V1.0
*/
public final class XMLMethods {
private static final Logger LOG = Logger.getLogger(XMLMethods.class);
private XMLMethods() {
}
/** xml文件存放路径 */
private static final String SMS_XML_PATH = "sms.xml";
/**
* @Title: readSMSXML
* @Description: 使用jdom解析XML
* @return SMSBean
* @author
* @date 2012-5-9
*/
public static SMSBean readSMSXML() {
InputStreamReader isr = null;
try {
// 获取要读取的文件的输入流
InputStream is = XMLMethods.class.getClassLoader()
.getResourceAsStream(SMS_XML_PATH);
/** 为防止乱码,使用 UTF-8 进行编码 */
isr = new InputStreamReader(is, "UTF-8");
} catch (UnsupportedEncodingException e) {
LOG.error("unsupport UTF-8 encoding!", e);
} catch (Exception e) {
LOG.error("occur others Exception!", e);
}
// 使用字符缓冲读取
BufferedReader bufferReader = new BufferedReader(isr);
// 使用JDOM的SAXBuilder解析器
SAXBuilder builder = new SAXBuilder();
Document doc = null;
try {
// 构建一个JDOM的Document
doc = builder.build(bufferReader);
} catch (JDOMException e) {
LOG.error("create Document faile!", e);
} catch (Exception e) {
LOG.error("occur others Exception!", e);
}
// 根元素
Element root = doc.getRootElement();
// 短信内容实体类
SMSBean sms = new SMSBean();
/** 获取xml文件中的元素 */
Element spID = root.getChild("sp_id");
if (null != spID) {
sms.setSpID(spID.getTextTrim());
}
Element spPWD = root.getChild("sp_pwd");
if (null != spPWD) {
sms.setSpPWD(spPWD.getTextTrim());
}
Element phone = root.getChild("phone");
if (null != phone) {
sms.setPhone(phone.getTextTrim());
}
Element content = root.getChild("content");
if (null != content) {
sms.setContent(content.getTextTrim());
}
Element timeStamp = root.getChild("time_stamp");
if (null != timeStamp) {
sms.setTimeStamp(timeStamp.getTextTrim());
}
Element sendPort = root.getChild("sender");
if (null != sendPort) {
sms.setSendPort(sendPort.getTextTrim());
}
Element serviceID = root.getChild("serviceId");
if (null != serviceID) {
sms.setServiceID(serviceID.getTextTrim());
}
return sms;
}
}
6、测试方法
public static void main(String[] args) {
SMSBean sms = readSMSXML();
if (null != sms) {
System.out.println(sms.getSpID());
System.out.println(sms.getSpPWD());
System.out.println(sms.getPhone());
System.out.println(sms.getContent());
System.out.println(sms.getTimeStamp());
System.out.println(sms.getSendPort());
System.out.println(sms.getServiceID());
} else {
System.out.println("read "+SMS_XML_PATH+" faile!");
}
}
7、测试结果
qidi
qidi123
15902843301
短信内容
201203281726
106586282010
family