JDOM使用前需要上传jar包。
先写一个XML栗子:
<?xml version="1.0" encoding="UTF-8"?>
<books xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="{book.xsd}">
<book id="1001">
<name>从入门到放弃</name>
<auto>高人</auto>
<price>35.5</price>
</book>
<book id="1002">
<name>从删库到跑路</name>
<auto>高小人</auto>
<price>48.3</price>
</book>
<book id="1003">
<name>从java到光头</name>
<auto>高大人</auto>
<price>16.6</price>
</book>
</books>
JDOM解析XML的步骤:
1) 创建一个 SAXBuilder 对象
2) 调用 build 方法,得到 Document 对象(通过 IO 流)
3) 获取根节点
4) 获取根节点的直接子节点的集合
5) 遍历集合。
package com.bjsxt.JDOM;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.security.KeyStore.Entry.Attribute;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
public class TestJDOM {
public static void main(String[] args) throws FileNotFoundException, JDOMException, IOException {
//1) 创建一个 SAXBuilder 对象
SAXBuilder saxb=new SAXBuilder();
//2) 调用 build 方法,得到 Document对象(通过 IO 流)
Document doc = saxb.build(new FileInputStream("book.xml"));
//3) 获取根节点
Element root = doc.getRootElement();//得到的books结点
//4) 获取根节点的直接子节点的集合
List<Element> boolList = root.getChildren();//得到book
//5) 遍历集合,得到book的每一个结点
for (int i = 0; i <boolList.size(); i++) {
Element book = boolList.get(i);
List<org.jdom.Attribute> attList = book.getAttributes();
for (org.jdom.Attribute att : attList) {
System.out.println(att.getName()+"\t"+att.getValue());
}
}
//得到每一个子节点
System.out.println("\n---------得到每一个子节点-----------");
for (int i = 0; i <boolList.size(); i++) {
Element book = boolList.get(1);//得到每一个book结点
List<Element> subook = book.getChildren();
for (Element ele : subook) {
System.out.println(ele.getName()+"\t"+ele.getValue());
}
System.out.println("==================");
}
}
}
运行截图: