Java學習筆記(2)—-Web項目中解析XML檔案

來源:互聯網
上載者:User


       據說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,謝謝~

   

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.