⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch12_3_1.java~4~

📁 介绍ORACLE的新体系
💻 JAVA~4~
字号:
/* 程序范例: Ch12_3_1.java */
import javax.xml.parsers.*;
import org.xml.sax.*;
import org.w3c.dom.*;
import java.io.*;

public class Ch12_3_1 {
    // 声明XML文件
    static Document document;
    public static void main(String[] args) {
        if (args.length != 1) {
            System.out.println("使用: java Ch12_3_1 xml_file");
            return;
        }
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        try {
           DocumentBuilder db = dbf.newDocumentBuilder();
           // 导入XML文件
           document = db.parse(new File(args[0]));
           // 获取文件的子节点
           Node child = (Node)document.getFirstChild();
           // 获取这一层的所有节点
           for ( ; child != null; child = child.getNextSibling()) {
               System.out.print("元素: " + child.getNodeName());
               System.out.println("/类型: " + child.getNodeType());
               printChildNode(child, 0);
           }
        } catch(SAXException se) {
           // 过程错误
           Exception  e = se;
           if (se.getException() != null)
               e = se.getException();
           e.printStackTrace();
        } catch(ParserConfigurationException pe) {
            // 解析器设定错误
            pe.printStackTrace();
        } catch(IOException ie) {
           // 文件处理错误
           ie.printStackTrace();
        }
    }
    // 显示子节点的返回方法
    private static void printChildNode(Node temp, int pos) {
      //判断是否有子节点
      if (temp.hasChildNodes()) {
      //得到所有子节点
           NodeList nodes = temp.getChildNodes();
           // 循环获取所有的子节点
           for (int i=0; i < nodes.getLength(); i++) {
              //得到节点类型
              int type = nodes.item(i).getNodeType();
              //是元素节点
              if (type == Node.ELEMENT_NODE) {
                 //产生一个缩进格式
                 printIndent(pos);
                 //打印元素的名字
                 System.out.println(" 元素(" + i + "):" + nodes.item(i).getNodeName());
                 //继续递归
                 printChildNode(nodes.item(i), pos+1);
              }
              //是文本节点
              if (type == Node.TEXT_NODE) {
                 printIndent(pos);
                 System.out.print(" 元素(" + i + "): " + nodes.item(i).getNodeName());
                 //打印值
                 String val = nodes.item(i).getNodeValue();
                 if (val != null) {
                     System.out.print("/元素值: ");
                     if (val.trim().equals(""))
                        System.out.println("[WS]");
                     else
                        System.out.println(val);
                 }
              }
           }
        }
    }
    // 显示缩排的字符
    private static void printIndent(int num) {
        System.out.print("  +");
        for (int i = 0; i <= num; i++) {
            System.out.print("--");
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -