【Java开源代码栏目提醒】:网学会员在Java开源代码频道为大家收集整理了XmlDomDemo.java提供大家参考,希望对大家有所帮助!
package ch6.xml;
import org.apache.xerces.parsers.*;
import org.w3c.dom.*;
/**
* XmlDomDemo.java
演示如何遍历一棵DOM 树 .
*/
public class XmlDomDemo {
public void parseAndPrint(String uri) {
Document doc = null;
try {
DOMParser parser = new DOMParser();
parser.parse(uri);
doc = parser.getDocument();
} catch (Exception e) {
System.err.println("Sorry, an error occurred: " + e);
}
// 开始解析DOM树并打印出内容
if (doc != null) {
printDOMTree(doc);
}
}
/** 打印一个给定结点的内容, 然后打印出该结点的所有子结点. */
public void printDOMTree(Node node) {
int type = node.getNodeType();
switch (type) {
// 打印
文档的元素
case Node.DOCUMENT_NODE: {
System.out.println("<?xml version=\"1.0\" ?>");
printDOMTree(((Document) node).getDocumentElement());
break;
}
// 打印元素的属性
case Node.ELEMENT_NODE: {
System.out.print("<");
System.out.print(node.getNodeName());
NamedNodeMap attrs = node.getAttributes();
for (int i = 0; i < attrs.getLength(); i++) {
Node attr = attrs.item(i);
System.out.print(" " + attr.getNodeName() + "=\"" + attr.getNodeValue()
+ "\"");
}
System.out.println(">");
NodeList children = node.getChildNodes();
if (children != null) {
int len = children.getLength();
for (int i = 0; i < len; i++) {
printDOMTree(children.item(i));
}
}
break;
}
// 处理结点所涉及的实体
case Node.ENTITY_REFERENCE_NODE: {
System.out.print("&");
System.out.print(node.getNodeName());
System.out.print(";");
break;
}
// 打印 cdata 片段
case Node.CDATA_SECTION_NODE: {
System.out.print("<![CDATA[");
System.out.print(node.getNodeValue());
System.out.print("]]>");
break;
}
case Node.TEXT_NODE: {
System.out.print(node.getNodeValue());
break;
}
// 打印处理实例
case Node.PROCESSING_INSTRUCTION_NODE: {
System.out.print("<?");
System.out.print(node.getNodeName());
String data = node.getNodeValue();
{
System.out.print(" ");
System.out.print(data);
}
System.out.print("?>");
break;
}
}
if (type == Node.ELEMENT_NODE) {
System.out.println();
System.out.print("</");
System.out.print(node.getNodeName());
System.out.print('>');
}
}
/** 主函数. */
public static void main(String argv[]) {
if (argv.length == 0) {
System.out.println("用法: java 程序应用");
System.out.println(" 输入Java
程序的文件地址和所要解析的XML
文档.");
System.out.println(" 例如: java XmlDomDemo XmlDemoon.
xml");
argv = new String[1];
argv[0] = "src\\ch6\\xml\\XmlDemoone.xml";
}
XmlDomDemo d1 = new XmlDomDemo();
d1.parseAndPrint(argv[0]);
}
}