zoukankan      html  css  js  c++  java
  • Java如何读取XML文件 具体实现

    转载自:http://www.jb51.net/article/44338.htm

    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元素属性type
         System.out.println("
    找到一篇账号. 所属区域: " + 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())) // 输出code
           System.out.println("卡号: " + detail.getTextContent());
          else if ("pass".equals(detail.getNodeName())) // 输出pass
           System.out.println("密码: " + detail.getTextContent());
          else if ("name".equals(detail.getNodeName())) // 输出name
           System.out.println("姓名: " + detail.getTextContent());
          else if ("money".equals(detail.getNodeName())) // 输出money
           System.out.println("余额: " + detail.getTextContent());
         }
        } 
        }
      } 
       catch (Exception e) {
       e.printStackTrace();
      }
     }
    }

    /*if("index_SCORM.html".equals(detail2.getAttributes().getNamedItem("href").getNodeValue())){
    return "index_SCORM.html";*/

     


     

    然后我们测试的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

  • 相关阅读:
    HDU4474 Yet Another Multiple Problem BFS搜索
    HDU4473 Exam 数学分析
    2013ACM多校联合(4)
    POJ1273 网络流...
    HDU4472 Count 递推
    POJ1149 PIGS 网络流
    UVA10881 Piotr's Ants 想法题
    javascript js string.Format()收集
    修改 设置 vs.net 网站 调试 设为 起始页
    【转】HTML5杂谈 概念与现行游戏 割绳子 宝石迷阵
  • 原文地址:https://www.cnblogs.com/zrui-xyu/p/4760904.html
Copyright © 2011-2022 走看看