domprinter.java

来自「孙鑫JAVA从入门到精通配套练习程序。所有程序都实际运行过」· Java 代码 · 共 74 行

JAVA
74
字号
//演示遍历XML文档
import java.io.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.xml.sax.*;

class DOMPrinter
{
	//打印节点的名字和值
	public static void printNodeInfo(Node node)
	{
		System.out.println(node.getNodeName()+" : "+node.getNodeValue());
	}
	//递归打印节点信息
	public static void printNode(Node node)
	{
		short nodeType = node.getNodeType();
		switch(nodeType)
		{
			case Node.PROCESSING_INSTRUCTION_NODE:
				System.out.println("------PI Start------");
				printNodeInfo(node);
				System.out.println("------PI End------");
				break;
			case Node.ELEMENT_NODE:
				System.out.println("------Element Start------");
				printNodeInfo(node);
				System.out.println("------Element End------");
				
				//打印元素的属性
				NamedNodeMap attrs = node.getAttributes();
				int attrNum = attrs.getLength();
				for(int i=0;i<attrNum;i++)
				{
					Node attr = attrs.item(i);
					System.out.println("------Attr Start------");
					printNodeInfo(attr);
					System.out.println("------Attr End------");
				}
				break;
			case Node.TEXT_NODE:
				System.out.println("------Text Start------");
				printNodeInfo(node);
				System.out.println("------Text End------");
				break;
			default:
				break;
			}
				
				//递归调用打印元素的子节点信息
				Node child = node.getFirstChild();
				while(null!=child)
				{
					printNode(child);
					child = child.getNextSibling();
				}
		}
	
	public static void main(String[] args)
	{
		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
		try
		{
			DocumentBuilder db = dbf.newDocumentBuilder();
			Document doc = db.parse(new File("students.xml"));
			System.out.println("calling printNode");
			printNode(doc);
		}
		catch(Throwable ex)
		{
			ex.printStackTrace();
		}
	}
}

⌨️ 快捷键说明

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