xml
<?xml version="1.0" encoding="UTF-8" ?>
<Dataset>
<table name="test">
<columns>
<column cname="reqno" type="varchar" size="50" isnull="false" ispk="true"/>
<column cname="age" type="int" isnull="true" ispk="false"/>
<column cname="pname" type="varchar" size="50" isnull="false" ispk="false" default="无名氏"/>
</columns>
</table>
</Dataset>
java代码
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.io.File;
import java.util.List;
public class Test {
@org.junit.Test
public void test1() throws DocumentException {
//获取解析器
SAXReader saxReader = new SAXReader();
//解析配置文件
Document document = null;
document = saxReader.read(new File("D:\\worksoft\\comparison\\test.xml"));
//获取根标签元素
Element rootElement = document.getRootElement();
this.getNodes(rootElement);//从根节点开始遍历所有节点
}
public void getNodes(Element node) {
System.out.println("--------------------");
//当前节点的名称、文本内容和属性
System.out.println("当前节点名称:" + node.getName());//当前节点名称
System.out.println("当前节点的内容:" + node.getTextTrim());//当前节点名称
List<Attribute> listAttr = node.attributes();//当前节点的所有属性的list
for (Attribute attr : listAttr) {//遍历当前节点的所有属性
String name = attr.getName();//属性名称
String value = attr.getValue();//属性的值
System.out.println("属性名称:" + name + "属性值:" + value);
}
//递归遍历当前节点所有的子节点
List<Element> listElement = node.elements();//所有一级子节点的list
for (Element e : listElement) {//遍历所有一级子节点
this.getNodes(e);//递归
}
}
}
输出结果
--------------------
当前节点名称:Dataset
当前节点的内容:
--------------------
当前节点名称:table
当前节点的内容:
属性名称:name属性值:test
--------------------
当前节点名称:columns
当前节点的内容:
--------------------
当前节点名称:column
当前节点的内容:
属性名称:cname属性值:reqno
属性名称:type属性值:varchar
属性名称:size属性值:50
属性名称:isnull属性值:false
属性名称:ispk属性值:true
--------------------
当前节点名称:column
当前节点的内容:
属性名称:cname属性值:age
属性名称:type属性值:int
属性名称:isnull属性值:true
属性名称:ispk属性值:false
--------------------
当前节点名称:column
当前节点的内容:
属性名称:cname属性值:pname
属性名称:type属性值:varchar
属性名称:size属性值:50
属性名称:isnull属性值:false
属性名称:ispk属性值:false
属性名称:default属性值:无名氏