Java学习笔记(2)----Web项目中解析XML文件
来源:互联网 发布:淘宝vip课程有用吗 编辑:程序博客网 时间:2024/06/05 23:57
据说Java中解析xml文件有3种方式,可惜本人一种也不会。在网上查询了大量的资料,但大多数都是在Java Project下进行的,本人也解析成功了。但是用eclipse或MyEclipse创建的Java Web工程与Java Project工程有那么一些区别。其中一点就是Java Project工程下没有WebRoot根目录,而Java Web工程下有WebRoot根目录,Java编译后的class文件被默认放在WEB-INF/classes下,这就让我不知道在普通类中咋获得服务器根路径,要知道服务器下是没有“WebRoot”这一路径的,为这个我郁闷了好久。不过在松哥的指点下,还是解决了这个问题,在此表示感谢。
好了,言归正传,先看一个xml文件mailConfig.xml:
<?xml version="1.0"encoding="UTF-8"?><content> <mail> <mailServerHost>smtp.163.com</mailServerHost> <mailServerPort>25</mailServerPort> <validate>true</validate> <userName>lindf123of@163.com</userName> <password>*********</password> <fromAddress>lindf123of@163.com</fromAddress> </mail></content>
所在的路径如下所示:
开始解析xml文件,新建一个Java类XMLUtil.java,代码如下所示:
package com.ldfsoft.util;import java.io.File;import java.io.IOException;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.NodeList;import org.xml.sax.SAXException;import com.ldfsoft.dto.MailSenderDto;public class XMLUtil {private MailSenderDto mailSenderInfoDto;public MailSenderDto getMailMess(String nodeName,String fileName){DocumentBuilderFactory documentBuilderFactory=DocumentBuilderFactory.newInstance();String path = this.getClass().getClassLoader().getResource("xml").getPath(); //获得存放mailConfig.xml文件的xml目录mailSenderInfoDto=new MailSenderDto();try {DocumentBuilder documentBuilder=documentBuilderFactory.newDocumentBuilder();Document document=documentBuilder.parse(path+File.separator+fileName);NodeList nodeList=document.getElementsByTagName(nodeName);if(nodeList.getLength()>0){Element element=(Element) nodeList.item(0);mailSenderInfoDto.setMailServerHost(element.getElementsByTagName("mailServerHost").item(0).getFirstChild().getNodeValue());mailSenderInfoDto.setMailServerPort(element.getElementsByTagName("mailServerPort").item(0).getFirstChild().getNodeValue());mailSenderInfoDto.setValidate(Boolean.valueOf(element.getElementsByTagName("validate").item(0).getFirstChild().getNodeValue()));//注意String类型转boolean类型的方法mailSenderInfoDto.setUserName((element.getElementsByTagName("userName").item(0).getFirstChild().getNodeValue()));mailSenderInfoDto.setPassword(element.getElementsByTagName("password").item(0).getFirstChild().getNodeValue());mailSenderInfoDto.setFromAddress(element.getElementsByTagName("fromAddress").item(0).getFirstChild().getNodeValue());}} catch (ParserConfigurationException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SAXException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return mailSenderInfoDto;}}
MailSenderDto为上一篇文章( Java学习笔记(1)----Java中发送邮件)的dto,在本文中省略。这个类中的getMailMess(StringnodeName,String fileName)有两个参数,其中nodeName为节点名,fileName为这个xml文件的文件名,将获取的数据封装到MailSenderDto的一个实例中并返回。
我们接着在JavaUtil.java类中用如下形式代替上篇文章这个类的此方法,部分代码如下所示:
/** * 发送激活账户邮件 */ public void sendEmail(String email) { mailSenderDto=xmlUtil.getMailMess("mail", "mailConfig.xml"); try{ String mailTitle="【我的网盘】账号激活邮件"; StringmailContent="<br><br>亲爱的【我的网盘】用户:<br><br>"+ " 您好!感谢您注册【我的网盘】帐号,点击下面的链接即可完成注册:<br><br>"+ " <ahref=\"http://localhost:9080/mydisk/swf/activateEmail.html#email="+email+"\">http://localhost:9080/mydisk/swf/activateEmail.html#email="+email+"</a><br><br>"+ " (如果链接无法点击,请将它复制并粘贴到浏览器的地址栏中访问)<br><br>"+ " 您的Email:"+email+"<br><br>"+ " Email可以作为您的帐号来登录【我的网盘】。<br><br>"+ " 本邮件是系统自动发送的,请勿直接回复!感谢您的访问,祝您使用愉快!<br><br>"; mailSenderDto.setToAddress(email); //收件人邮箱地址 mailSenderDto.setSubject(mailTitle); //邮件标题 mailSenderDto.setContent(mailContent); //邮件内容 //这个类主要用来发送邮件 MailSender ms = new MailSender(); ms.sendHtmlMail(mailSenderDto);//发送html格式 System.out.println("---------------发送成功!"); }catch(Exception e){ System.out.println("失败了!"); } }
经过测试,是一样的效果。只是这样大大减少了发送mail属性与代码的耦合性,方便管理。其实更主要的是让我学到了怎么解析xml文件。
这是本人学习的结果,允许转载,欢迎交流,但转载务必给出本文章的链接地址:http://blog.csdn.net/youqishini/article/details/7906571,谢谢~
- Java学习笔记(2)----Web项目中解析XML文件
- Web项目中解析XML文件
- java web学习笔记1-tomcat conf文件解析笔记之server.xml
- Java之JDOM方式解析XML文件(学习笔记)
- Java之DOM4J方式解析XML文件(学习笔记)
- Java web留言板项目part2:xml文件解析详解
- 【JAVA WEB】学习笔记——XML解析
- XML学习04-Java中DOM方式解析XML文件
- XML学习05-Java中SAX方式解析XML文件
- XML学习06-Java中Dom4J方式解析XML文件
- Java:Struts 项目中web.xml文件配置
- Java web项目中读取properties,xml文件
- 【学习笔记】JAVA之使用dom4j对xml文件解析
- 【学习笔记】JAVA之使用SAX解析XML文件
- 学习笔记-Java中的xml文件读取之DOM解析
- 学习笔记-Java中的xml文件读取之SAX解析
- 学习笔记-Java中的xml文件读取之JDOM解析
- 学习笔记-Java中的xml文件读取之DOM4J解析
- 30个非常棒的CSS开发工具和应用
- 玩转计算机基础教程及工具集锦
- Linux 中直接 I/O 机制的介绍
- VC 2010 + MFC : 在对话框里面加入工具条CMFCToolBar
- 用脚本添加mouseover和mouseout事件
- Java学习笔记(2)----Web项目中解析XML文件
- 关于C++类成员函数的重载、覆盖、隐藏与virtual关键字
- Python操作Mysql
- USB驱动开发(4)--传输USB I/O请求
- linux 驱动 编译加载 , 程序搬移到目标板,驱动源码和头文件位置
- 数据指标累计用户数的使用
- 云计算核心技术剖析学习笔记_1
- 学习Linux二(创建、删除文件和文件夹命令)
- 游戏人工智能 移植到android源码