Java 读取XML文件(DOM)

来源:互联网 发布:网站php源代码在哪 编辑:程序博客网 时间:2024/05/03 04:54

XML文件的一个常用用途是保存数据,例如我们可以将连接数据库的相关信息保存到一个xml文件中,程序通过读取xml文件的内容获取信息。这样当数据库的连接信息改变时,我们只需要修改一下xml中对应的内容就可以保证在不修改源程序的情况下继续执行。

xml文件的读取有多种方法,本文介绍的是最简单的方法:利用DOM实现

步骤概括如下:

  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.jspresult:1_2.jspresult:1_3.jspresult: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>


原创粉丝点击