jdom操作xml文档

一:简介(引用)

Jdom是一个开源项目,基于树形结构,利用纯java的技术对XML文档实现解析,生成,序列化以及多种操作。它是直接为java编程服务,利用java语言的特性(方法重载,集合),把SAX和DOM的功能结合起来,尽可能的把原来解析xml变得简单,我们使用Jdom解析xml会是一件轻松的事情。

Jdom的优点:
1、Jdom专用于java技术,比Dom应用占用更少内存。
2、Jdom提供更加简单和逻辑性访问xml信息的基础方法
3、除xml文件外,Jdom还可以访问其他的数据源,例如可以创建类从SQL查询结果中访问数据
Jdom的构成:
Jdom由6个包构成
Element类表示XML文档的元素
org.jdom:      解析xml文件所要用到的基础类
org.jdom.adapters:   包含DOM适配的Java类
org.jdom.filter:      包含xml文档的过滤类
org.jdom.input:     包含读取XML文档的Java类
org.jdom.output:      包含输出XML文档的类

org.jdom.trans form: 包含将Jdom xml文档接口转换为其他XML文档接口的Java类

二、案例

1、生成xml

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;

import java.io.FileOutputStream;
import java.io.IOException;

/**
 * @author LZJ
 * @create 2018-07-12 18:56
 **/
public class Test {

    public static void generateXML(){

        //创建元素
        Element bookStore = new Element("bookStore");

        Element englishBook = new Element("englishBook");
        englishBook.setAttribute("color","white");
        englishBook.setAttribute("price","49");
        Element mathBook = new Element("mathBook");
        mathBook.setAttribute("name","mathBook");
        mathBook.setAttribute("price","66");

        bookStore.addContent(englishBook);
        bookStore.addContent(mathBook);

        //将元素add到文档对象中
        Document document = new Document(bookStore);
        //设置流输出的编码格式
        Format compactFormat = Format.getCompactFormat();
        compactFormat.setEncoding("UTF-8");
//        compactFormat.setLineSeparator("#");
        compactFormat.setIndent("\t");


        XMLOutputter xmlOutputter = new XMLOutputter(compactFormat);
        try {
            xmlOutputter.output(document,new FileOutputStream("/Users/LZJ/test/test_xml/aa.xml"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args){
        generateXML();
    }
}
运行结果:


2、读xml中的内容

        Map<String,String> result = new HashMap();

        SAXBuilder saxBuilder = new SAXBuilder();
        Document document = null;
        try {
            document = saxBuilder.build(xmlFilePath);
        } catch (JDOMException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        Element rootElement = document.getRootElement();
        List<Element> childrenList = rootElement.getChildren();
        for (Element children : childrenList) {
            System.out.println(children.getAttribute("name"));
            System.out.println(children.getAttribute("price"));
            System.out.println("=======");
        }
    }

    public static void main(String[] args){
//        generateXML();
        readXML("/Users/LZJ/test/test_xml/aa.xml");
    }
运行结果:

猜你喜欢

转载自blog.csdn.net/qq_36898043/article/details/81020534