XML文件的一个常用用途是保存数据,例如我们可以将连接数据库的相关信息保存到一个xml文件中,程序通过读取xml文件的内容获取信息。这样当数据库的连接信息改变时,我们只需要修改一下xml中对应的内容就可以保证在不修改源程序的情况下继续执行。
xml文件的读取有多种方法,本文介绍的是最简单的方法:利用DOM实现
视频教程:http://video.sina.com.cn/v/b/38133992-1801138375.html
步骤概括如下:
- 获取DocumentBuilderFactory
- 通过DocumentBuilder工厂产生一个DocumentBuilder
- 利用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>
转载:https://www.cnblogs.com/e241138/archive/2012/07/11/2586552.html