您的位置:首页 > 编程语言 > Java开发

[JAVA]XML读取

2005-11-20 18:52 309 查看
在java对XML进行处理时,读取XML文档,对其处理,这是我得一个实例代码。

import java.io.FileInputStream;
import javax.xml.parsers.*;
import org.w3c.dom.*;

/*
* Created on 2004-6-2
*java读取XML文档
*利用DoM来读取一个XML文档的内容,并将其打印出来
*/

public class TestXML {

public static void main(String[] args) {
Document doc;
DocumentBuilderFactory factory;
DocumentBuilder docBuilder;

Element root;
String elementName;

FileInputStream in;
String fileName;
try{

//get the xml file
fileName = System.getProperty("user.dir");
fileName = fileName+"/sample.xml";
in = new FileInputStream(fileName);

//解析XML文件,生成document对象
factory = DocumentBuilderFactory.newInstance();
factory.setValidating(false);
docBuilder = factory.newDocumentBuilder();
doc = docBuilder.parse(in);
//解析成功
System.out.println("parse successfull");

//获取XML文档的根节点
root = doc.getDocumentElement();
elementName = root.getNodeName();
//打印根节点的属性
printAttributes(root);

//打印该文档全部节点
System.out.println("打印全部节点");
printElement(root,0);

}
catch(Exception exp){
exp.printStackTrace();
}
}

//打印某个节点的全部属性
public static void printAttributes(Element elem){
NamedNodeMap attributes;
int i,max;
String name,value;
Node curNode;

attributes = elem.getAttributes();
max = attributes.getLength();

for(i=0;i<max;i++){
curNode = attributes.item(i);
name = curNode.getNodeName();
value = curNode.getNodeValue();
System.out.println("/t"+name+" = "+value);
}
}

//打印所有的节点的名称和值
//改方法采用递归方式打印文档的全部节点
public static void printElement(Element elem,int depth){
String elementName;
NodeList children;
int i,max;
Node curChild;
Element curElement;
String nodeName,nodeValue;

//elementName = elem.getNodeName();
//获取输入节点的全部子节点
children = elem.getChildNodes();

//按一定格式打印输入节点
for(int j=0;j<depth;j++){
System.out.print(" ");
}
printAttributes(elem);

//采用递归方式打印全部子节点
max = children.getLength();
for(i=0;i<max;i++){

curChild = children.item(i);

//递归退出条件
if(curChild instanceof Element){
curElement = (Element)curChild;
printElement(curElement,depth+1);
}
else{
nodeName = curChild.getNodeName();
nodeValue = curChild.getNodeValue();

for(int j=0;j<depth;j++)System.out.print(" ");
System.out.println(nodeName+" = "+nodeValue);
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: