【CSDN常见问题解答】Java如何读取XML文件

来源:互联网 发布:参加好声音的网络主播 编辑:程序博客网 时间:2024/05/01 19:16

今天的CSDN常见问题来讲解下在Java中如何读取XML文件的内容。

直接上代码吧,注释写的很清楚了!

import java.io.*;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;public class XMLReaderTest {public static void main(String args[]) {Element element = null;// 可以使用绝对路劲File f = new File("test.xml");// documentBuilder为抽象不能直接实例化(将XML文件转换为DOM文件)DocumentBuilder db = null;DocumentBuilderFactory dbf = null;try {// 返回documentBuilderFactory对象dbf = DocumentBuilderFactory.newInstance();// 返回db对象用documentBuilderFatory对象获得返回documentBuildr对象db = dbf.newDocumentBuilder();// 得到一个DOM并返回给document对象Document dt = db.parse(f);// 得到一个elment根元素element = dt.getDocumentElement();// 获得根节点System.out.println("根元素:" + element.getNodeName());// 获得根元素下的子节点NodeList childNodes = element.getChildNodes();// 遍历这些子节点for (int i = 0; i < childNodes.getLength(); i++) {// 获得每个对应位置i的结点Node node1 = childNodes.item(i);if ("Account".equals(node1.getNodeName())) {// 如果节点的名称为"Account",则输出Account元素属性typeSystem.out.println("\r\n找到一篇账号. 所属区域: " + node1.getAttributes().getNamedItem("type").getNodeValue() + ". ");// 获得<Accounts>下的节点NodeList nodeDetail = node1.getChildNodes();// 遍历<Accounts>下的节点for (int j = 0; j < nodeDetail.getLength(); j++) {// 获得<Accounts>元素每一个节点Node detail = nodeDetail.item(j);if ("code".equals(detail.getNodeName())) // 输出codeSystem.out.println("卡号: " + detail.getTextContent());else if ("pass".equals(detail.getNodeName())) // 输出passSystem.out.println("密码: " + detail.getTextContent());else if ("name".equals(detail.getNodeName())) // 输出nameSystem.out.println("姓名: " + detail.getTextContent());else if ("money".equals(detail.getNodeName())) // 输出moneySystem.out.println("余额: " + detail.getTextContent());}}}}catch (Exception e) {e.printStackTrace();}}}

然后我们测试的XML文件(test.xml)要放在项目工程的根目录下,其内容是:

<?xml version="1.0" encoding="gbk"?><Accounts><Account type="type1"><code>100001</code><pass>123</pass><name>李四</name><money>1000000.00</money></Account><Account type="type2"><code>100002</code><pass>123</pass><name>张三</name><money>1000.00</money></Account></Accounts>

直接运行代码,输出:

根元素:Accounts找到一篇账号. 所属区域: type1. 卡号: 100001密码: 123姓名: 李四余额: 1000000.00找到一篇账号. 所属区域: type2. 卡号: 100002密码: 123姓名: 张三余额: 1000.00


原创粉丝点击