`

JDOM基础

 
阅读更多

JDOM Java Document Object Model

JDOM使用对象树来表示XML.

JDOM使用SAX解析器来解析XML文档,构建JDOM.JDOM本身没有解析器.

JDOM主要API以类为主,而非接口.简化了编程,但限制了灵活性.JDOM使用集合类作为对象存储的容器.

 

 

JDOM共有七个包

org.jdom包中包含了表示XML文档及其组成部分的类.Document,Element,AttributeCDATA.

org.jdom.xpath  包含 XPath 查找类.

org.jom.transform  包含 XSTL 转换类.

org.jdom.adapters  包含 几种主要解析器的适配器类.

org.jdom.filter 包含 过滤文档节点的类.

org.jdom.input包下提供了如下两个类用于构建JDOM.

DOMBuilder:将一份已有的W3CDocument对象转换为JDOMDocument.

SAXBuilder:工具类,可以将来自输入流,磁盘或指定URL所代表的XML文档转换为JDOMDocument.

org.jdom. Output包下提供三个输出工具类.

DOMOutputter  将内存中的JDOM树输出成W3CDOM.

SAXOutputter  将内存中的JDOM树输出到SAX2流中,用于出发SAX2事件监听器.

XMLOutputter  将内存中的JDOM树输出成XML文档.

 

 

 

org.jdom

常用API中只有Parent是接口.

Parent接口代表所有能包含子内容的节点.有连个实现类,Element,Document.

Parent接口中常用方法:

List getContent()  返回当前元素所包含的所有子内容.

Int getContentSize()  返回该元素所包含的所有子内容的大小.

Iterator getDescendants()  获取该元素所包含的所有后代节点.

Document getDocument()  返回该元素所在的XML文档所对应的Document.

Parent getParent()  返回父元素.

Int indexOf()  返回指定子内容在当前元素的子内容列表中的索引.

List removeContent()  删除当前元素的指定子内容,并返回被删除的内容.

 

 

常用类

Document  代表XML文档.它不能是其他对象的内容.所以只是实现了Parent接口.

Content  所有JDOM对象的抽象父类.

 

Content的派生类:

Element  XML 元素.

Text  XML文档中的文本内容.

CDATA  XML文档中的CDATA.

DocType  XML文档中的DOCTYPE声明.

ProcessingInstruction  XML文档里的处理指令.

EntityRef  XML文档中的实体引用.

Comment  XML文档中的注释内容.

 

Attribute  XML文档中的属性.属性是附属于某个元素的.所以Attribute单独的一个类.

 

 

创建XML文档

Document doc=new Document();    //创建文档.

Element eltRoot=new Element(“student”);    //创建一个元素.

doc.setRootElement(eltRoot);    //把元素作为文档的根元素.

 

或者在构造Document,传入根元素

Element eltRoot=new Element(“student”);    //创建一个元素.

Document doc=new Document(eltRoot);    //创建文档,且把元素作为文档的根元素.

 

 

添加属性

eltRoot.setAttribute(“sn”,”10”);

 

添加子元素并设置元素内容

Element eltName=new Element(“name”)  //创建元素,子元素.

Element eltAge=new Element(“age”)  //创建元素,子元素.

 

eltName.setText(“剑圣”);  //给元素添加内容.

eltAge.setText(“128”);  //给元素添加内容.

 

eltRoot.addContent(eltName);  //给元素添加子元素

eltRoot.addContent(eltAge);  //给元素添加子元素

 

输出文档

org.jdom. Output包下

DOMOutputter  将内存中的JDOM树输出成W3CDOM.

SAXOutputter  将内存中的JDOM树输出到SAX2,用于出发SAX2事件监听器.

XMLOutputter  将内存中的JDOM树输出为字节流.

例如,

XMLOutputter xmlOut=new XMLOutputter();

xmlOut.output(doc,System.out);

输出可以选择输出到文件或套接字流,或控制台输出流中.

xmlOut.output(doc,new FileOutputStream(“student.xml”));

格式化输出

Format,用于设置输出文档的字符编码,设置行分隔符,以及设置缩进字符串.

public static Format getCompactFormat()

采用紧凑格式.即对文档中的空白进行规范化,使用UTF-8编码,不展开空元素,包含声明和编码,以及使用默认的实体转义策略.

 

public static Format getRowFormat()

采用原始格式.即对文档中的空白保持不变,使用UTF-8编码,不展开空元素,包含声明和编码, 以及使用默认的实体转义策略.

 

public static Format getPrettyFormat()

采用美化的格式.即使用两个空格作为缩进来输出文档, 不展开空元素,包含声明和编码,以及使用默认的实体转义策略.

 

下面采用美化的格式输出文档至控制台输出流,设置字符编码为GB2312.

Format fmt=Format.getPrettyFormat();    //得到格式对象.

fmt.setEncoding(“GB2312”);    //设置格式对象的编码

fmt.setIndent(“  ”);      //设置格式对象的缩进

xmlOut.setFormat(fmt);   //输出对象设置格式(即把格式对象绑定到输出对象)

xmlOut.output(doc,System.out);    //输出对象把文档对象传至输出流.

 

构建JDOM

org.jdom.input包下提供了如下两个类用于构建JDOM.

DOMBuilder:将已有的W3C DOMDocument对象或Element对象转换为JDOM的对象.

SAXBuilder: 使用一个第三方的SAX解析器,将不同输入源(输入流,磁盘或指定URL所代表的XML文档)转换为JDOMDocument.

 

DOMBuilder类构造JDOM文档对象.

DocumentBuilderFactory dbf= DocumentBuilderFactory.newInstance();  //构建W3C DOM解析器工厂

DocumentBuilder db= dbf.newDocumentBuilder();  //构建解析器

File file=new File(“students.xml”);  //引用文件

org.w3c.dom.Document document=db.parse(file);  //得到W3C DOM document

DOMBuilder domBuilder=new DOMBuilder();    //创建JDOMdomBuilder

org.jdom.Document doc=domBuilder.builder(document);  // W3C DOM document

转为 JDOM document.

 

 

访问根元素

使用Document类的getRootElement()方法,用于返回文档的根元素.

Element root=doc.getRootElement();

 

 

访问子元素

Element类中定义了获取子元素的方法.

要得到某个元素的所有子元素.

java.util.List childrenList=element.getChildren();  //

 

要得到某个元素的指定名称的子元素

java.util.List childrenList=element.getChildren(“student”);  //

 

要得到指定名称元素的第一个子元素

java.util.List childrenList=element.getChild (“student”);  //

 

要删除某个元素的指定名称的所有子元素

element.removeChildren (“student”);  //

 

要删除某个元素的指定名称的第一个元素

element. removeChildren (“student”);  //

 

 

访问属性

Element类中定义了访问元素属性的方法.

要得到某元素的所有属性

java.util.List attrList=element.getAttributes();  //

 

要得到指定的属性

Attribute attr=element.getAttribute(“sn”);  //

 

要得到指定的属性的值

String attrValue=element.getAttributeValue(“sn”);  //

 

要删除指定的属性

element.removeAttribute (“sn”);  //

 

验证XML文档

使用DTD验证

在构造SAXBuilder对象时传入参数true.

 

 

使用Scheme验证

 

 

 

 

分享到:
评论

相关推荐

    java开发教程Jdom使用教程

    JDOM是一个开源项目,它基于树型结构,利用纯JAVA的技术对XML文档实现解析、生成、序列化以及多种操作。

    JDOM操作XML文件.doc

    JDOM操作XML文件 这篇文章讲的不错~把JDOM的基本操作实例化了,不过由于当时的作者用的JDOM版本还比较陈旧,所以部分代码会编译出错!...所以,法老在原作者的基础上对程序做了修改!休正了编译出错以及中文乱码的问题

    Java Web 开发实战经典(基础篇)

    010304_XML解析 —— JDOM 010305_XML解析 —— DOM4J 010306_使用JavaScript操作DOM 010401_Tomcat服务器的安装及配置 020501_注释及Scriptlet 020502_page指令 020503_包含指令 020504_跳转指令 020505_实例操作:...

    XML的四种解析器原理及性能比较

    JDOM 和 DOM 在性能测试时表现不佳,在...它还是许多其它与 XML 相关的标准的基础,因为它正式获得 W3C 推荐,所以在某些类型的项目中可能也需要它。 SAX表现较好,这要依赖于它特定的解析方式。无疑,DOM4J是最好的。

    疯狂XML讲义(Web Service).pdf

    本书主要分为五个部分。...本书是疯狂Java体系丛书之一,学习本书无须任何XML基础,但DOM、SAX、dom4j、JDOM解析部分包含了大量Java编程,因此建议先认真阅读疯狂Java体系的《疯狂Java讲义》一书。

    疯狂XML讲义

    本书主要分为五个部分。...本书是疯狂Java体系丛书之一,学习本书无须任何XML基础,但DOM、SAX、dom4j、JDOM解析部分包含了大量Java编程,因此建议先认真阅读疯狂Java体系的《疯狂Java讲义》一书。

    Hibernate基础配置导入的最小JAR包

    包括以下几个Jar包: hibernate3.jar-核心...dom4j-1.6.1.jar-类似于jdom,用来读写XML文件的 javassist-3.4.GA.jar- Javassist 字节码解释器 jta-1.1.jar-标准的JTA API。 slf4j-api-1.5.2.jar slf4j-nop-1.5.2.jar

    疯狂xml讲义

    本书主要以XML为核心,深入地介绍了XML的... 本书是疯狂Java体系丛书之一,学习本书无须任何XML基础,但DOM、SAX、dom4j、JDOM解析部分包含了大量Java编程,因此建议先认真阅读疯狂Java体系的《疯狂Java讲义》一书。

    疯狂XML讲义.part3.rar

    本书主要以XML为核心,深入地介绍了XML的各种...本书是疯狂Java体系丛书之一,学习本书无须任何XML基础,但DOM、SAX、dom4j、JDOM解析部分包含了大量Java编程,因此建议先认真阅读疯狂Java体系的《疯狂Java讲义》一书。

    疯狂XML讲义.part1

    本书主要以XML为核心,深入地介绍了XML的各种...本书是疯狂Java体系丛书之一,学习本书无须任何XML基础,但DOM、SAX、dom4j、JDOM解析部分包含了大量Java编程,因此建议先认真阅读疯狂Java体系的《疯狂Java讲义》一书。

    疯狂XML讲义.part2.rar

    本书主要以XML为核心,深入地介绍了XML的各种...本书是疯狂Java体系丛书之一,学习本书无须任何XML基础,但DOM、SAX、dom4j、JDOM解析部分包含了大量Java编程,因此建议先认真阅读疯狂Java体系的《疯狂Java讲义》一书。

    java xml 增删改查

    它还是许多其它与XML相关的标准的基础,因为它正式获得W3C推荐(与基于非标准的Java模型相对),所以在某些类型的项目中可能也需要它(如在 JavaScript中使用DOM)。 3:SAX表现较好,这要依赖于它特定的解析方式...

    Java语言基础下载

    JDOM解析实例 413 JAVA操纵XML 实例讲解 414 通过JAVA写数据到XML里面 415 内容总结 418 独立实践 418 第二十三章:HTML基础 419 学习目标 419 知识要点 420 HTML元素 420 标签属性 420 HTML基本标签 422 标题元素 ...

    sutInfo.xml

    自定义xml,通过Jdom,对xml进行各种基础操作

    疯狂XML讲义 源码

    《疯狂XML讲义》是疯狂Java体系丛书之一,学习《疯狂XML讲义》无须任何XMI,基础,但DOM、SAX、dora4i、JDOM解析部分包含了大量Java编程,因此建议先认真阅读疯狂Java体系的《疯狂Java讲义》一书。

    dom4j-1.6.1 + w3cschool.CHM离线帮助文档

    dom4j 目录的介绍: 1)docs 是文档目录 2)如何查 Dom4j 的文档 3)Dom4j 快速入门 2)lib 目录 ...第三方的解析: jdom 在 dom 基础上进行了封装、 dom4j 又对 jdom 进行了封装。 pull 主要用在 And

Global site tag (gtag.js) - Google Analytics