您的位置:首页 > 其它

[Source Code]学习了一种比较经典的遍历XML文件的方法

2006-08-31 16:28 489 查看
[b]使用DOM:[/b]

package com.mycompany.xmltest;

import java.io.File;
import java.io.IOException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class DOMParseXML {

public void scanXML(File thefile) {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = null;
Document doc = null;
try {
db = dbf.newDocumentBuilder();
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
doc = db.parse(thefile);
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Element root = doc.getDocumentElement();
echoNode(root);
}

private void echoNode(Node node) {

switch (node.getNodeType()) {
case Node.ELEMENT_NODE:
System.out.println("This is an element: ");
System.out.println("Name: " + node.getNodeName() + "/n");
if (node.hasChildNodes()) {
NodeList nlist = node.getChildNodes();
for (int i = 0; i < nlist.getLength(); i++) {
echoNode(nlist.item(i));
}
}

if (node.hasAttributes()) {
NamedNodeMap namedNodeMap = node.getAttributes();
for (int i = 0; i < namedNodeMap.getLength(); i++) {
echoNode(namedNodeMap.item(i));
}
}
break;

case Node.ATTRIBUTE_NODE:
System.out.println("This is an attribute: ");
System.out.println("Name :" + node.getNodeName());
System.out.println("Value :" + node.getNodeValue() + "/n");
break;

case Node.TEXT_NODE:
System.out.println("This is a text: ");
System.out.println("Content: /" " + node.getNodeValue() + "/"/n");
break;

default:
System.out.println("### Node type: " + node.getNodeType() + "###");
System.out.println("Name: " + node.getNodeName());
System.out.println("Value: " + node.getNodeValue());
break;
}
}

public static void main(String[] args) {
DOMParseXML test = new DOMParseXML();
test.scanXML(new File("F://1.xml"));
}

}

使用Dom4j:

package com.mycompany.xmltest;

import java.io.File;
import java.util.Iterator;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;

public class Dom4jParseXML {

public void scanXML(File thefile){
SAXReader saxReader = new SAXReader();
Document doc = null;
try {
doc = saxReader.read(thefile);
} catch (DocumentException e) {
e.printStackTrace();
}
Element root = doc.getRootElement();
echo(root);
}

private void echo(Node node) {

switch (node.getNodeType()) {
case Node.ELEMENT_NODE:
System.out.println("############## This is an element: ###############");
System.out.println("Type Name: " + node.getNodeTypeName());
System.out.println("Node Name: " + node.getName());
System.out.println("Xpath StringValue: " + node.getStringValue());
System.out.println("*********************************************");
Element ele = (Element) node;
if (ele.attributeCount() !=0 ) {
Iterator attrIt = ele.attributeIterator();
while (attrIt.hasNext()) {
echo((Node) attrIt.next());
}
}

if (ele.hasContent()) {
Iterator eleIt = ele.elementIterator();
while (eleIt.hasNext()) {
echo((Node) eleIt.next());
}
}
break;

case Node.ATTRIBUTE_NODE:
System.out.println("~~~~~~~~~~~~~~ This is an attribute: ~~~~~~~~~~~~~~~");
System.out.println("Type Name: " + node.getNodeTypeName());
System.out.println("Node Name: " + node.getName() + " Value: " + ((Attribute)node).getValue());
System.out.println("Xpath StringValue: " + node.getStringValue());
System.out.println("*********************************************");
break;

case Node.TEXT_NODE:
System.out.println("========== This is a text: " + node.getText() + "=========");
System.out.println("*********************************************");
break;

default:
System.out.println(" ^^^^^^^^^^^^^ Other type of node: ^^^^^^^^^^^^^");
System.out.println("Type Name: " + node.getNodeTypeName());
System.out.println("Node Name: " + node.getName());
System.out.println("*********************************************");
break;
}
}

public static void main(String[] args) {
Dom4jParseXML test = new Dom4jParseXML();
test.scanXML(new File("F://build.xml"));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: