现在的位置: 首页 > 综合 > 正文

读取xml文件,快速入门

2017年04月15日 ⁄ 综合 ⁄ 共 2270字 ⁄ 字号 评论关闭

用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!!!

抱歉!评论已关闭.