导入jar包后就可以使用dom4j了。简单的解析xml代码如下:
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.net.URL;
import java.util.Iterator;
public class Test {
public static void main(String[] args) throws DocumentException {
//读取xml
SAXReader reader = new SAXReader();
Document document = reader.read("src/test.xml");
Element root = document.getRootElement();
System.out.println(root.getName()); //这里 girllist
//遍历每一个子标签
Iterator<Element> it = root.elementIterator();
while(it.hasNext()){
Element element = it.next();
System.out.print(" " + element.getName() + "(");
//遍历每一个子标签的属性
Iterator<Attribute> attributeIterator = element.attributeIterator();
while(attributeIterator.hasNext()){
Attribute attribute = attributeIterator.next();
System.out.print(attribute.getName() + ":" + attribute.getValue() + ", ");
}
System.out.println(")");
//遍历每一个孙子标签
Iterator<Element> it2 = element.elementIterator();
while (it2.hasNext()){
Element ele2 = it2.next();
System.out.println(" " + ele2.getName() + " -- " + ele2.getText());
}
}
}
//↓↓↓↓↓↓----- 标准文档 ------↓↓↓↓↓↓
//得到 Document 对象
public Document parse(URL url) throws DocumentException {
SAXReader reader = new SAXReader();
Document document = reader.read(url);
return document;
}
//遍历标签 的 子标签、属性
public void bar(Document document) throws DocumentException {
Element root = document.getRootElement();
// iterate through child elements of root
for (Iterator<Element> it = root.elementIterator(); it.hasNext();) {
Element element = it.next();
// do something
}
// iterate through child elements of root with element name "foo"
for (Iterator<Element> it = root.elementIterator("foo"); it.hasNext();) {
Element foo = it.next();
// do something
}
// iterate through attributes of root
for (Iterator<Attribute> it = root.attributeIterator(); it.hasNext();) {
Attribute attribute = it.next();
// do something
}
}
}
这里是用到的test.xml
<?xml version="1.0" encoding="UTF-8" ?>
<girllist>
<girl id="1" sex="女">
<num>67373</num>
<name>一发儿</name>
<place>重庆</place>
</girl>
<girl id="2" sex="女">
<num>78622</num>
<name>二珂儿</name>
<place>上海</place>
</girl>
<girl id="3" sex="男">
<num>688</num>
<name>大仙</name>
<place>武汉</place>
</girl>
</girllist>
还有运行结果图: