Java开发

解析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
上一篇下一篇

猜你喜欢

热点阅读