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