当前位置: 首页 > 工具软件 > JDOM > 使用案例 >

JDOM基础

申自明
2023-12-01

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验证

 

 

 

 

 类似资料: