Java 讀取XML文件(DOM)


XML文件的一個常用用途是保存數據,例如我們可以將連接數據庫的相關信息保存到一個xml文件中,程序通過讀取xml文件的內容獲取信息。這樣當數據庫的連接信息改變時,我們只需要修改一下xml中對應的內容就可以保證在不修改源程序的情況下繼續執行。

xml文件的讀取有多種方法,本文介紹的是最簡單的方法:利用DOM實現

視頻教程:http://video.sina.com.cn/v/b/38133992-1801138375.html

步驟概括如下:

  1. 獲取DocumentBuilderFactory
  2. 通過DocumentBuilder工廠產生一個DocumentBuilder
  3. 利用DocumentBuilder產生Document

Document可以看成是xml文件在內存中的一個鏡像,這樣,我們可以通過操作Document來實現對xml文件的操作。

下面通過簡單的代碼來實現上面描述的過程:

package wzs;

import java.io.File;

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

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

public class XMLReader {

    public static void main(String[] args) {
        
        try {
            
            File f = new File("MyXml.xml");
            
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();//步驟1
            
            DocumentBuilder builder = factory.newDocumentBuilder();//步驟2
            
            Document doc = builder.parse(f);//步驟3
            
            NodeList nl = doc.getElementsByTagName("action");
            
            for (int i = 0; i < nl.getLength(); i++) {
                
                System.out.println("result:"+ doc.getElementsByTagName("result")
                        .item(i).getFirstChild().getNodeValue());            
            }
            
        } catch (Exception e) {
            
            e.printStackTrace();
        }
    }
}

程序運行結果如下:

result:1_1.jsp
result:1_2.jsp
result:1_3.jsp
result:1_4.jsp

 

其中步驟3有一個方法parse(File f),用來將給定文件的內容解析為一個XML文檔,並返回一個新的Document對象。

獲取到Document對象后,再獲取節點的值應該不是問題了,API中有對應的方法,這里就不再贅述了。

附上MyXml.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<struts>
  <constant name="struts.i18n.encoding" value="gb2312">324</constant>
  <package name="stuts2" extends="struts-default">
       <action name="login" class="ActionUnit.Person">
            <result name="s">1_1.jsp</result>
            <result name="t">1_2.jsp</result>
            <result name="m">1_3.jsp</result>
            <result name="fail">1_4.jsp</result>
       </action> 
        <action name="modifyPassword" class="student.ModifyPassword">
            <result name="success">2_1.jsp</result>
            <result name="fail">2_2.jsp</result>
       </action>
       <action name="studentquery" class="student.QueryScore">
            <result name="success">3_1.jsp</result>
            <result name="false">3_2.jsp</result>
       </action>
        <action name="infoquery" class="student.QueryInfo"> 
            <result name="success">4_1.jsp</result>
            <result name="false">4_2.jsp</result>
       </action>
  </package>
</struts>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM