1.简介
1>JDOM是一种使用XML的独特Java工具包,用于快速开发XML应用程序。它的设计包含Java语言的语法乃至语义。它基于树型结构,利用纯JAVA的技术对XML文档实现解析、生成以及序列化等多种操作,利用更为强有力的JAVA语言特性,把SAX和DOM的功能有效地结合起来。
2>JAXP--用于XML语法分析的Java API 包含以下三个软件包:
a.org.w3c.dom--W3C推荐的用于XML标准规划文档对象模型的Java工具
b.org.w3c.sax--用于对XML进行语法分析的事件驱动的简单API
c.javax.xml.parsers--工厂化工具,允许应用程序开发人员获得并配置特殊的语法分析器工具。
JDOM能够替换org.w3c.dom软件包有计划地操作XML文档
3>JDOM的jar包组成:
a.org.jdom--包含了所有xml文档要素的java类
b.org.jdom.adapaters--包含了与dom适配的java类
c.org.jdom.filter--包含了xml文档的过滤器类
d.org.jdom.input--包含了读取xml文档的类
e.org.jdom.output--包含了写入xml文档的类
f.org.jdom.transform--包含了将jdom xml文档接口转换为其他xml文档接口
g.org.jdom.xpath--包含了对xml文档xpath操作的类
4>利用JDOM创建XML文档,并将文档进行输出:
public static void main(String[] args) {
try {
Document document=new Document();//构建文档
Element root=new Element("persons");//创建根元素
document.addContent(root); //将根元素添加到文档中
Comment comment=new Comment("this is a comment");//创建注释
root.addContent(comment); //将注释添加到文档中
Element e1=new Element("person"); //创建普通元素
e1.setAttribute("stuno","s01"); //为普通元素设置属性
root.addContent(e1);
Element e2=new Element("person");
Attribute attr=new Attribute("stuno", "s02");//创建属性
e2.setAttribute(attr); //将属性添加到元素中
e2.addContent(new Element("name").setText("cash"));//创建元素,并使用setText()为元素设置值
List<Element> list=new ArrayList<Element>(); //创建元素集合
list.add(new Element("gender").setText("male"));
list.add(new Element("age").setText("20"));
e2.addContent(list); //将元素集合作为元素的子节点添加元素中
root.addContent(e2);
//输出文档
//Format format=Format.getRawFormat(); //该方法通常用于XML数据的网络传输,这种格式可以去掉不必要的空白,减少传送的数据量
Format format=Format.getPrettyFormat(); //创建XML文档输出的格式化方式(该格式化方式,用户可以自定义)
XMLOutputter out=new XMLOutputter(format); //根据XML格式化方式创建XML输出器
out.output(document, new FileOutputStream("jdom.xml"));//输出XML文档
} catch (Exception e) {
e.printStackTrace();
}
}
5>JDOM解析XML文档,并输出到控制台上
public static void main(String[] args) throws Exception { SAXBuilder builder=new SAXBuilder(); //创建解析器 Document document=builder.build(new File("jdom.xml")); //根据xml文档构建document文档对象 Element root=document.getRootElement(); //获取根节点 parseXML(root); } private static void parseXML(Element element){ System.out.print("<"+element.getName()); List<Element> list=element.getChildren(); //获取节点下所有子节点集合 List<Attribute> atrs=element.getAttributes();//获取节点所有属性 if(null!=atrs){ for(Attribute atr :atrs){ String atrName=atr.getName(); String atrValue=atr.getValue(); System.out.print(" "+atrName+"=\""+atrValue+"\""); } } System.out.print(">"); if(null!=list&&0!=list.size()){ for(Element e:list){ parseXML(e); } }else{ System.out.print(element.getText()); } System.out.println("</"+element.getName()+">"); }