您的位置:首页 > 其它

读取xml文件,快速入门

2011-09-08 21:54 477 查看
用Dom4j读取xml文件,在xml文件夹下有test2.xml文件:

<?xml version="1.0" encoding="gb2312"?>
<students name="zizhu" age="21">
<student age="25">
<name>崔卫兵</name>
<college>PC学院</college>
</student>
<student>
<name>cwb</name>
<college leader="学院领导">PC学院</college>
</student>
<student age="45">
<name>xxxxx</name>
<college leader="">xxx学院</college>
<element name="测试">
<next>下一个</next>
<subElement>hello,done!!!</subElement>
</element>
</student>
</students>


源码:

package com.test;

import java.util.Iterator;

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

public class JdomTest2 {

public static void main(String[] args) {
SAXReader reader=new SAXReader();
try {
//总结一:此处得到文档的位置:任何一个读文件的方式必定会提供一个拥有InputStream输入流的操作方式,可以说这种方式是万能的
//ClassLoader默认的是当前项目的classpath路径,即bin目录
Document document=reader.read(JdomTest2.class.getClassLoader().getResourceAsStream("xml/test2.xml"));
Element root=document.getRootElement();//得到根节点
tree(root);//遍历
} catch (DocumentException e) {
e.printStackTrace();
}
}

//遍历
public static void tree(Element element){
/**
* 形如这种方式:<element>
* 				<name>zizhu</name>
* 				<age>21</age>
* 				<address>上海</address>
* 		   </element>,其中所有的都能用elementIterator这种方式遍历出来,取的时候用getName和getText来取
*/
System.out.println("节点的名字:"+element.getName()+"\t节点的值:"+element.getText());
//遍历节点的所有属性
//总结二:得到元素所有的属性,attributeIterator
//形如这种方式<element name="hello" age=21 address="上海">...</>,其中所有的属性都能用这种方式遍历出来
Iterator rootAttriIter=element.attributeIterator();
while(rootAttriIter.hasNext()){
Attribute rootAttribute=(Attribute)rootAttriIter.next();
//形如这种方式<element name="hello" age=21 address="上海">...</>,通过getName取到属性的名字,通过getValue取到值
System.out.print("节点的属性的名字和值:"+rootAttribute.getName()+"="+rootAttribute.getValue()+"\t");
}
System.out.println();
//遍历节点的所有子节点
Iterator subElementIter=element.elementIterator();
while(subElementIter.hasNext()){
Element subElement=(Element)subElementIter.next();
tree(subElement);
}
}

}


输出结果:

节点的名字:students 节点的值:

节点的属性的名字和值:name=zizhu 节点的属性的名字和值:age=21

节点的名字:student 节点的值:

节点的属性的名字和值:age=25

节点的名字:name 节点的值:崔卫兵

节点的名字:college 节点的值:PC学院

节点的名字:student 节点的值:

节点的名字:name 节点的值:cwb

节点的名字:college 节点的值:PC学院

节点的属性的名字和值:leader=学院领导

节点的名字:student 节点的值:

节点的属性的名字和值:age=45

节点的名字:name 节点的值:xxxxx

节点的名字:college 节点的值:xxx学院

节点的属性的名字和值:leader=

节点的名字:element 节点的值:

节点的属性的名字和值:name=测试

节点的名字:next 节点的值:下一个

节点的名字:subElement 节点的值:hello,done!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: