?? ch12_3_1.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 + -