您的位置:首页 > 其它

Dom4j解析Xml与Dom解析Xml

2012-06-06 10:23 183 查看
二种方式比较:Dom4j易用强大,Dom易懂繁杂;

下面贴出二中解析方式的代码:

<?xml version="1.0" encoding="UTF-8"?>
<Root>
<MailInfo>
<ServierHost>smtp.qq.com</ServierHost> <!-- 发送邮件的服务器IP -->
<ServerPost>25</ServerPost>  <!-- 发送邮件的服务器端口 -->
<Protocol>smtp</Protocol>   <!-- 协议 -->
<UserName>UserName</UserName>  <!-- 发送用户名 -->
<Password>123456789</Password>  <!-- 发送邮件密码 -->
<SendMailAddress>UserName@163.com</SendMailAddress> <!-- 发送邮箱地址 -->
</MailInfo>

<!-- 任务加载配置 -->
<Schedulers>
<schdeuler>
<JobDetail><ClassName>com.fix.ciss.quartz.job.BillChnageJob</ClassName><Name>BillChnageJob</Name><Group>BillChnageGroup</Group></JobDetail>
<CronTrigger><Name>BillChnageTrigger</Name><Group>BillChnageGroup</Group><CronExpression>0 0 23 * * ?</CronExpression></CronTrigger>
</schdeuler>
<schdeuler>
<JobDetail><ClassName>com.fix.ciss.quartz.job.BrithJob</ClassName><Name>BrithJob</Name><Group>BrithGroup</Group></JobDetail>
<CronTrigger><Name>BrithTrigger</Name><Group>BrithGroup</Group><CronExpression>0 30 0 1 * ?</CronExpression></CronTrigger>
</schdeuler>
<schdeuler>
<JobDetail><ClassName>com.fix.ciss.quartz.job.RepaymentJob</ClassName><Name>RepaymentJob</Name><Group>RepaymentGroup</Group></JobDetail>
<CronTrigger><Name>RepaymentTrigger</Name><Group>RepaymentGroup</Group><CronExpression>0 30 23 * * ?</CronExpression></CronTrigger>
</schdeuler>
<schdeuler>
<JobDetail><ClassName>com.fix.ciss.quartz.job.CalendarJob</ClassName><Name>CalendarJobJob</Name><Group>CalendarJobGroup</Group></JobDetail>
<CronTrigger><Name>CalendarTrigger</Name><Group>CalendarGroup</Group><CronExpression>0 0 1 1 * ?</CronExpression></CronTrigger>
</schdeuler>
<schdeuler>
<JobDetail><ClassName>com.fix.ciss.quartz.job.TaskToSendJob</ClassName><Name>TaskToSendJob</Name><Group>TaskToSendGroup</Group></JobDetail>
<CronTrigger><Name>TaskToSendTrigger</Name><Group>TaskToSendGroup</Group><CronExpression>0 40 0 * * ?</CronExpression></CronTrigger>
</schdeuler>
<schdeuler>
<JobDetail><ClassName>com.fix.ciss.quartz.job.FtpJob</ClassName><Name>FtpJob</Name><Group>FtpGroup</Group></JobDetail>
<CronTrigger><Name>FtpTrigger</Name><Group>FptGroup</Group><CronExpression>0 50 0 * * ?</CronExpression></CronTrigger>
</schdeuler>
</Schedulers>
</Root>


第一种:Dom解析:

package com.fix.ciss.mail;

import java.io.FileInputStream;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

/**
* 解析MailSendInfo.xml文件
* @author pengpan
* 修改日期:2012/05/23
*/
public class MailXmlHelp {

private Document getDocument() throws Exception {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
FileInputStream fis = new FileInputStream(MailXmlHelp.class.getResource("").getPath().replaceAll("%20", " ")+"MailSendInfo.xml"); //注:MailSendInfo.xml与当前Java文件在同一目录
Document doc = db.parse(fis);
return doc;
}

/**
* 解析<MailInfo>
* @return
*/
public MailSenderInfo getMailSenderInfo() {
MailSenderInfo mailSendObj = new MailSenderInfo();
try {
Document doc = getDocument();
NodeList nodeList = doc.getElementsByTagName("MailInfo");
for(int i=0;i<nodeList.getLength();i++){
Element ele = ((Element)nodeList.item(i));
String servierHost = ele.getElementsByTagName("ServierHost").item(0).getTextContent();
String serverPost = ele.getElementsByTagName("ServerPost").item(0).getTextContent();
String protocol = ele.getElementsByTagName("Protocol").item(0).getTextContent();
String userName = ele.getElementsByTagName("UserName").item(0).getTextContent();
String password = ele.getElementsByTagName("Password").item(0).getTextContent();
String sendMailAddress = ele.getElementsByTagName("SendMailAddress").item(0).getTextContent();
mailSendObj.setMailServerHost(servierHost);
mailSendObj.setMailServerPost(Integer.parseInt(serverPost));
mailSendObj.setProtocol(protocol);
mailSendObj.setUserName(userName);
mailSendObj.setPassword(password);
mailSendObj.setFromAddress(sendMailAddress);
}
} catch (Exception e) {
e.printStackTrace();
}
return mailSendObj;
}
}




第二种:Dom4j 解析:

package com.fix.ciss.mail;

import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import com.fix.ciss.obj.CronTriggerObj;
import com.fix.ciss.obj.JobDetailObj;
import com.fix.ciss.obj.SchdeulerObj;

public class SchedulersXmlHelp {
private Document getDocument(String path){
SAXReader saxReader = new SAXReader();
Document doc = null;
try {
doc = saxReader.read(new File(path));
} catch (DocumentException e) {
// TODO Auto-generated catch block
System.out.println("读取文档异常");
e.printStackTrace();
}
return doc;
}

/**
* 解析Schedulers
* @return
*/
public  List<SchdeulerObj> getSchedulers(){
List<SchdeulerObj> list =new ArrayList<SchdeulerObj>();
SchdeulerObj schObj = null;
JobDetailObj detailObj = null;
CronTriggerObj cronTrig = null;
Document doc = getDocument(SchedulersXmlHelp.class.getResource("").getPath().replaceAll("%20", " ")+"MailSendInfo.xml");
Iterator root = doc.getRootElement().element("Schedulers").elementIterator();
while(root.hasNext()){
Element element = (Element)root.next();
schObj = new SchdeulerObj();
Iterator iterJob = element.elementIterator("JobDetail"); //子节点JobDetail集合

while(iterJob.hasNext()){
Element eleJob=(Element)iterJob.next();
detailObj =new JobDetailObj();
detailObj.setClassName(eleJob.elementTextTrim("ClassName"));
detailObj.setGroup(eleJob.elementTextTrim("Group"));
detailObj.setName(eleJob.elementTextTrim("Name"));
}

Iterator iterTrigger = element.elementIterator("CronTrigger");
while(iterTrigger.hasNext()){
cronTrig = new CronTriggerObj();
Element eleTrigger=(Element)iterTrigger.next();
cronTrig.setName(eleTrigger.elementTextTrim("Name"));
cronTrig.setGroup(eleTrigger.elementTextTrim("Group"));
cronTrig.setCronExpression(eleTrigger.elementTextTrim("CronExpression"));
}
schObj.setJob(detailObj);
schObj.setCron(cronTrig);
list.add(schObj);
}
return list;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: