读书人

应用JDOM解析XML文件

发布时间: 2012-09-02 21:00:34 作者: rapoo

使用JDOM解析XML文件

?

附件为相应的代码及配置文件

?

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的Documentdoc = 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、测试结果

qidiqidi12315902843301短信内容201203281726106586282010family
?

读书人网 >XML SOAP

热点推荐