JDom使用详解

JDom是不错的API,算得上简单高效,最重要是已经成为jcp的一部分,这个咱得弄弄。不过www.jdom.org上写文档的人实在太懒,文档出奇的少,流传得最广的恐怕是IBM上面的一篇《JDom让java XML变得容易》,不过这篇文章只涉及基本的读写操作,远不能胜任实际工作。花了两天时间,把JDom的基本操作整理出来了,涵盖了大部分的操作:元素、属性、命名空间、PI、DTD、Schema,应付一般的应用没什么问题。反正我没有在网上见到更加详尽的版本,你见过的话,请留下连接。暂时来不及编写详细的说明,先帖几段程序,对有经验的Java开发者来说,已经足够了。程序都已经经过了实际的测试,我使用的JDom是0.9版。

1、创建XML文档:


package org.bromon.jdom.example; 
import java.io.*
import org.jdom.*
import org.jdom.input.*
import org.jdom.output.*

public class CreateXML 

public void Create() 

try 

Document doc 
= new Document(); 
ProcessingInstruction pi
=new ProcessingInstruction("xml-stylesheet","type="textxsl" href="test.xsl""); 
doc.addContent(pi); 

Namespace ns 
= Namespace.getNamespace("http://www.bromon.org" ); 
Namespace ns2 
= Namespace.getNamespace("other""http://www.w3c.org" ); 

Element root 
= new Element("根元素", ns); 
root.addNamespaceDeclaration(ns2); 
doc.setRootElement(root); 
Element el1 
= new Element("元素一"); 
el1.setAttribute(
"属性""属性一"); 

Text text1
=new Text("元素值"); 
Element em 
= new Element("元素二").addContent("第二个元素"); 

el1.addContent(text1); 
el1.addContent(em); 

Element el2 
= new Element("元素三").addContent("第三个元素"); 

root.addContent(el1); 
root.addContent(el2); 

//缩进四个空格,自动换行,gb2312编码 
XMLOutputter outputter = new XMLOutputter(" "true,"GB2312"); 
outputter.output(doc, 
new FileWriter("test.xml")); 
}
catch(Exception e) 

System.out.println(e); 
}
 
}
 

public static void main(String args[]) 

new CreateXML().Create(); 
}
 

}
 

2、DTD验证的:


package org.bromon.jdom.example; 
import java.io.*
import org.jdom.*
import org.jdom.input.*
import org.jdom.output.*

public class XMLWithDTD 

public void validate() 

try 

SAXBuilder builder 
= new SAXBuilder(true); 
builder.setFeature(
"http://xml.org/sax/features/validation";,true); 
Document doc 
= builder.build(new FileReader("author.xml")); 

System.out.println(
"搞掂"); 
XMLOutputter outputter 
= new XMLOutputter(); 
outputter.output(doc, System.out); 
}
catch(Exception e) 

System.out.println(e); 
}
 

}
 
public static void main(String args[]) 

new XMLWithDTD().validate(); 
}
 

}
 

需要说明的是,这个程序没有指明使用哪个DTD文件。DTD文件的位置是在XML中指定的,而且DTD不支持命名空间,一个XML只能引用一个DTD,所以程序直接读取XML中指定的DTD,程序本身不用指定。不过这样一来,好象就只能使用外部式的DTD引用方式了?高人指点。

3、XML Schema验证的:


package org.bromon.jdom.example; 
import java.io.*
import org.jdom.*
import org.jdom.input.*
import org.jdom.output.*

public class XMLWithSchema 

String xml
="test.xml"
String schema
="test-schema.xml"
public void validate() 

try 

SAXBuilder builder 
= new SAXBuilder(true); 
//指定约束方式为XML schema 
builder.setFeature("http://apache.org/xml/features/validation/schema";, true); 
//导入schema文件 
builder.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation";,schema); 
Document doc 
= builder.build(new FileReader(xml)); 

System.out.println(
"搞掂"); 
XMLOutputter outputter 
= new XMLOutputter(); 
outputter.output(doc, System.out); 
}
catch(Exception e) 

System.out.println(
"验证失败:"+e); 
}
 

}
 

}



posted on 2008-03-04 10:04 鲁胜迪 阅读(722) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 
<2008年3月>
2425262728291
2345678
9101112131415
16171819202122
23242526272829
303112345

导航

统计

常用链接

留言簿(4)

随笔分类

随笔档案

文章分类

新闻分类

搜索

最新评论

阅读排行榜

评论排行榜