解析XML文件的方式(四)之JDOM
2020-02-02 本文已影响0人
风中小酌
JDOM使用jdom工具包【jdom.jar,百度中可以找到】,基于树型结构解析XML。
0、要处理的XML文件
<?xml version="1.0" encoding="UTF-8"?>
<books xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<book id="1001">
<name>JAVA 高级编程</name>
<author>张三</author>
<price>85.72</price>
</book>
<book id="1002">
<name>C++和C#</name>
<author>李失失</author>
<price>125.73</price>
</book>
</books>
1、JDOM方式解析XML数据的步骤
a. 创建SAXBuilder对象
b. 调用build方法,通过IO流得到Document对象
c. 获取根节点
d. 获取根节点下直接子节点的集合
e. 遍历集合
import java.io.FileInputStream;
import java.io.IOException;
import java.util.List;
import org.jdom2.Attribute;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
public class TestJdom4Xml {
public static void main(String[] args) throws JDOMException, IOException {
//a. 创建SAXBuilder对象
SAXBuilder sb = new SAXBuilder();
//b. 调用build方法,通过OI流得到Document对象
Document doc = sb.build(new FileInputStream("src/book.xml"));
//c. 获取根节点
Element root = doc.getRootElement();
//d. 获取根节点下直接子节点的集合
List<Element> books = root.getChildren();
//e. 遍历集合,获取每一个子节点
for(int i=0;i<books.size();i++){
//获取集合中的元素
Element book = books.get(i);
//获取当前节点下的属性集合
List<Attribute> atts = book.getAttributes();
for(int j=0;j<atts.size();j++){
//输出属性名称:属性值
System.out.println(atts.get(j).getName() + "\t" + atts.get(j).getValue());
}
//获取当前节点下子节点
List<Element> subEles = book.getChildren();
//遍历子节点,获取名称和文本值
for(Element e : subEles){
System.out.println(e.getName() + "\t" + e.getValue());
}
}
}
}
3、输出结果如下
id 1001
name JAVA 高级编程
author 张三
price 85.72
id 1002
name C++和C#
author 李失失
price 125.73