students的xml文件
<?xml version="1.0" encoding="UTF-8"?>
<students>
<studnet id="s001">
<name>张三</name>
<age>23</age>
<tel>110</tel>
</studnet>
<student id = "s002">
<name>李四</name>
<age>32</age>
<tel>119</tel>
</student>
</students>
package org.westos.dom4j;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class DOM4JDemo {
public static void main(String[] args) throws FileNotFoundException, DocumentException {
// 导入jar包
// 创建解析DOM4J解析对象
SAXReader reader = new SAXReader();
Document doc = reader.read(new FileInputStream("students.xml"));
// 获取节点对象
// Node node = doc.node(0); //只能获取一个节点
// System.out.println(node.getName());
// 获取跟标签对象
Element rootelement = doc.getRootElement();
// 获取第一个子标签
Element stuElement = rootelement.element("student");
System.out.println(stuElement.getName());
System.out.println("-------------以下是获取所有子标签---------------------");
// 获取所有的子标签
List<Element> list = rootelement.elements();
for (Element ele : list) {
System.out.println(ele.getName());
}
// 方式三 获取所有子标签
System.out.println("-------------通过迭代器获取所有子标签---------------------");
Iterator<Element> elementIterator = rootelement.elementIterator();
while (elementIterator.hasNext()) {
Element element = elementIterator.next();
System.out.println(element.getName());
}
System.out.println("-------------以下是获取属性对象--------------------------");
Element element = rootelement.element("student");
Attribute attribute = element.attribute("id");
String value = attribute.getValue();
String name = attribute.getName();
System.out.println(name);
System.out.println(value);
// 方式2:直接获取属性值
System.out.println("------------------------------------------");
String value2 = rootelement.element("student").attributeValue("id");
System.out.println(value2);
// 方式三:获取所有的属性对象
List<Attribute> attributes = rootelement.element("student").attributes();
for (Attribute atr : attributes) {
String name2 = atr.getName();
String value3 = atr.getValue();
System.out.println(name2 + "======" + value3);
}
System.out.println("---------------通过迭代器获取所有的属性对象--------------------------");
Iterator<Attribute> attributeIterator = rootelement.element("student").attributeIterator();
while (attributeIterator.hasNext()) {
Attribute attribute2 = attributeIterator.next();
System.out.println(attribute2.getName() + "==" + attribute2.getValue());
}
System.out.println("--------------获取标签之间的文本-----------------------");
// 层层往下拿
String text = doc.getRootElement().element("student").element("name").getText();
System.out.println(text);
// 方式2:
String text2 = doc.getRootElement().element("student").elementText("name");
System.out.println(text2);
// 抽取方法获取所有节点
// getNodes(rootelement);
// 如果想获取所有节点
// Iterator<Node> iterator = doc.nodeIterator();
// while(iterator.hasNext()){
// Node node2 = iterator.next();
// System.out.println(node2.getName());
// }
}
// private static void getNodes(Element ele) {
// System.out.println(ele.getName());
// Iterator<Node> iterator = ele.nodeIterator();
// while(iterator.hasNext()){
// Node node2 = iterator.next();
// if(node2 instanceof Element){
// Element ele3 = (Element) node2;
// getNodes(ele3); //使用递归
// }
//
// }
// }
}