美文网首页Java开发
解析XML文件的方式(四)之JDOM

解析XML文件的方式(四)之JDOM

作者: 风中小酌 | 来源:发表于2020-02-02 19:13 被阅读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

    相关文章

      网友评论

        本文标题:解析XML文件的方式(四)之JDOM

        本文链接:https://www.haomeiwen.com/subject/lemqxhtx.html