以文本方式查看主题 - 计算机科学论坛 (http://bbs.xml.org.cn/index.asp) -- 『 Java/Eclipse 』 (http://bbs.xml.org.cn/list.asp?boardid=41) ---- Jdom使用指南[转帖] (http://bbs.xml.org.cn/dispbbs.asp?boardid=41&rootid=&id=27922) |
-- 作者:xiongbajian -- 发布时间:2/28/2006 9:30:00 PM -- Jdom使用指南[转帖] 对xml文档的解析java中有很多种方法,例如使用dom、sax、jdom等等,相比之下,我觉得还是jdom比较方便。下面介绍一下jdom的基本使用方法,不对之处还请各位网友之交。谢谢! 最新的jdom可以到他的网站:http://www.jdom.org去下载,现在的版本是1.0版,下载之后将得到jdom-1.0.zip文件,解压后进入build文件夹将看到一个名为jdom.jar的包,这个就是jdom的类包了,将它加到你的classpath里就可以使用jdom提供的各种处理xml的类和他们的方法了。应该注意的是在解压后的文件夹里还有一个lib文件夹,里面保存的是使用jdom的环境包,不过我在我的jdk1.4下使用没引用这些包一样好用,不知道是jdk1.4中已经包含了这些东西还是原来我的eclipse已经引用了这些包,呵呵。 好了,书归正传,现在开始介绍jdom包的使用。
jdom包的结构包括: org.jdom 包含了所有的xml文档要素的java类 org.jdom.adapters 包含了与dom适配的java类 org.jdom.filter 包含了xml文档的过滤器类 org.jdom.input 包含了读取xml文档的类 org.jdom.output 包含了写入xml文档的雷 org.jdom.transform 包含了将jdomxml文档接口转换为其他xml文档接口 org.jdom.xpath 包含了对xml文档xpath操作的类 下面将通过一个例子介绍jdom的常用操作
生成xml文档: 下面的类将生成一个xml文档: /* *Createdon2004-10-9 * *写入xml文件的例子 */
/** *@authorlnman * *Tochangethetemplateforthisgeneratedtypecommentgoto *Window>Preferences>Java>CodeGeneration>CodeandComments */ importjava.io.*; importorg.jdom.*; importorg.jdom.output.*;
publicclassWriteXML { publicvoidBuildXML()throwsException { Elementroot,student,number,name,age;
root=newElement("student-info");//生成根元素:student-info student=newElement("student"); //生成元素:student,该元素中将包含元素number,name,age number=newElement("number"); name=newElement("name"); age=newElement("age");
Documentdoc=newDocument(root); //将根元素植入文档doc中
number.setText("001"); name.setText("lnman"); age.setText("24"); student.addContent(number); student.addContent(name); student.addContent(age); root.addContent(student);
Formatformat=Format.getCompactFormat(); format.setEncoding("gb2312"); //设置xml文件的字符为gb2312 format.setIndent(" "); //设置xml文件的缩进为4个空格
XMLOutputterXMLOut=newXMLOutputter(format);//在元素后换行,每一层元素缩排四格 XMLOut.output(doc,newFileOutputStream("studentinfo.xml"));
}
publicstaticvoidmain(String[]args)throwsException { WriteXMLw=newWriteXML(); System.out.println("NowwebuildanXMLdocument....."); w.BuildXML(); System.out.println("finished!"); }
}
生成的xml文档为: <?xmlversion="1.0"encoding="gb2312"?> <student-info> <student> <number>001</number> <name>lnman</name> <age>24</age> </student> </student-info>
读取xml文档的例子: /* *Createdon2004-10-9 * *用jdom读取xml文档的例子 * */
/** *@authorlnman * *Tochangethetemplateforthisgeneratedtypecommentgoto *Window>Preferences>Java>CodeGeneration>CodeandComments */ importorg.jdom.output.*; importorg.jdom.input.*; importorg.jdom.*; importjava.io.*; importjava.util.*; publicclassReadXML {
publicstaticvoidmain(String[]args)throwsException {
SAXBuilderbuilder=newSAXBuilder(); Documentread_doc=builder.build("studentinfo.xml"); Elementstu=read_doc.getRootElement(); Listlist=stu.getChildren("student"); for(inti=0;i<list.size();i++) { Elemente=(Element)list.get(i); Stringstr_number=e.getChildText("number"); Stringstr_name=e.getChildText("name"); Stringstr_age=e.getChildText("age"); System.out.println("---------STUDENT--------------"); System.out.println("NUMBER:"+str_number); System.out.println("NAME:"+str_name); System.out.println("AGE:"+str_age); System.out.println("------------------------------"); System.out.println(); } }
}
Xpath例子:
JDOM的关于XPATH的api在org.jdom.xpath这个包里。这个包下,有一个抽象类XPath.java和实现类JaxenXPath.java, 使用时先用XPath类的静态方法newInstance(String xpath)得到XPath对象,然后调用它的selectNodes(Object context)方法或selectSingleNode(Object context)方法,前者根据xpath语句返回一组节点(List对象);后者根据一个xpath语句返回符合条件的第一个节点(Object类型)。请看jdom-1.0自带的范例程序: <web-app> <security-role> 处理程序: /** SAXBuilder builder = new SAXBuilder(); // Print servlet information out.println("This WAR has "+ servlets.size() +" registered servlets:"); if (roleNames.size() == 0) { 输出结果:
|
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
62.500ms |