跳转到主要内容

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

当您初次登录到 developerWorks 时,将会为您创建一份概要信息。您在 developerWorks 概要信息中选择公开的信息将公开显示给其他人,但您可以随时修改这些信息的显示状态。您的姓名(除非选择隐藏)和昵称将和您在 developerWorks 发布的内容一同显示。

所有提交的信息确保安全。

  • 关闭 [x]

当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

所有提交的信息确保安全。

  • 关闭 [x]

技巧: 从 JDOM 转换

JDOM 没有精确地映射到 DOM 和 SAX,但可以容易地输出到这两者

Brett McLaughlin (brett@newInstance.com), Enhydra 策略顾问, Lutris Technologies
Brett McLaughlin ( brett@newInstance.com) 是 Lutris Technologies 的 Enhydra 策略顾问和分布式系统体系结构方面的专家。他是 Java 和 XML (O'Reilly) 的作者。他还参加了,如 Java servlets、Enterprise JavaBeans 技术、XML 和商家对商家应用等技术的研究。他与 Jason Hunter 一起建立了 JDOM 项目,该项目为在 JAVA 应用程序中控制 XML 提供一个简单的 API。他还是 Apache Cocoon 项目和 EJBoss EJB 服务器的活跃开发人员以及 Apache Turbine 项目的共同创建者。

简介: 您正在学习如何使用 JDOM 吗? 没有哪一种 API不是孤立的,在本文中,您将了解如何轻易地从 JDOM 转换到 SAX 和DOM,从而使用所有这三种 API 来对 XML应用程序流畅地编程。本文中的代码样本提供了从 JDOM 到 SAX 和 JDOM 到DOM 的转换示例。

发布日期: 2001 年 4 月 01 日
级别: 初级
访问情况 : 1326 次浏览
评论: 


您可能和我一样已经跳上了 JDOM 这辆“彩车”。JDOM 易于使用(按照我较偏爱的 JDOM 作者之一的观点来看),并很容易使 XML 和 Java 配合默契。即,如果我甚至建议 JDOM 可以替换 DOM 和 SAX 并成为唯一的 Java 和 XML API 的话,那我一定是一个傻瓜。对于 DOM、SAX 和 JDOM,有许多不同的应用程序,而在基于 XML 的应用中几乎肯定会碰到所有这三种。至于 JDOM, 需要使您的合作者和管理者(他们也许没有象您一样走在最前沿)相信您可以使用 JDOM,而且还可以使程序与许多其它不使用 JDOM 的应用交互。这意味着需要从 JDOM 转换到 SAX 以及从 JDOM 转换到 DOM。在本文中,我将向您展示如何去做这两种转换。

从 JDOM 到 SAX

在使用 SAX 时,每一件事情都基于进入的事件系列。SAX 程序员编写回调方法实现它们,是在发生这些各种事件时执行的代码片段。所有 SAX 语法分析的核心是 SAX org.xml.sax.ContentHandler 接口,它定义了回调,该回调是 XML 文档处理的一部分。除此以外, ErrorHandlerDTDHandlerEntityResolver 接口也很重要。一旦建立了这些接口的实现,就可以将它们交给 org.jdom.output.SAXOutputter 类,而自己可以坐下来休息一会儿。清单 1 显示了它是如何工作的,并提供给您一些可以参考的想法。


清单 1. 从 JDOM 到 SAX 的转换
public convertToSAX(Document jdomDoc) throws JDOMException {
 SAXOutputter outputter = new SAXOutputter(new MyContentHandlerImpl());
 // Set the EntityResolver impl
 outputter.setEntityResolver(new MyEntityResolverImpl());
 // Set the DTDHandler impl
 outputter.setEntityResolver(new MyDTDHandlerImpl());
 // Set the ErrorHandler impl
 outputter.setEntityResolver(new MyErrorHandlerImpl());
 // Fire the SAX events
 outputter.output(jdomDoc);
}


从 JDOM 到 DOM

从 JDOM 结构转换到 DOM 结构与上面的方法类似。事实上,它甚至比使用 SAX 还容易,因为 DOM 和 JDOM 有略微相似的结构。这里没有什么特别之处:正如使用 SAXOutputter 输出到 SAX 一样,您需要使用 org.jdom.output.DOMOutputter 类输出到 DOM。清单 2 显示了这个起作用的类。


清单 2. 从 JDOM 到 DOM 的转换
public org.w3c.dom.Document convertToDOM(org.jdom.Document jdomDoc)
 throws JDOMException {
 DOMOutputter outputter = new DOMOutputter();
 return outputter.output(jdomDoc);
}
public org.w3c.dom.Element convertToDOM(org.jdom.Element jdomElement)
 throws JDOMException {
 DOMOutputter outputter = new DOMOutputter();
 return outputter.output(jdomElement);
}
public org.w3c.dom.Attr convertToDOM(org.jdom.Document jdomAttribute)
 throws JDOMException {
 DOMOutputter outputter = new DOMOutputter();
 return outputter.output(jdomAttribute);
}

当然,在 SAXOutputterDOMOutputter 中,还有其它一些有帮助的方法,这里只是一些基本的。如果您读过我所写的其它 XML 提示(请参阅“参考资料”),那么通过本文,您已知道如何使用 JDOM 以及如何把 JDOM 与接收 SAX 和 DOM 作为输入的应用程序和生成 SAX 和 DOM 的应用程序一起使用。继续学习并不断积累新知识,用 XML 的各种格式来交换 XML!


参考资料

关于作者

Brett McLaughlin ( brett@newInstance.com) 是 Lutris Technologies 的 Enhydra 策略顾问和分布式系统体系结构方面的专家。他是 Java 和 XML (O'Reilly) 的作者。他还参加了,如 Java servlets、Enterprise JavaBeans 技术、XML 和商家对商家应用等技术的研究。他与 Jason Hunter 一起建立了 JDOM 项目,该项目为在 JAVA 应用程序中控制 XML 提供一个简单的 API。他还是 Apache Cocoon 项目和 EJBoss EJB 服务器的活跃开发人员以及 Apache Turbine 项目的共同创建者。

关于报告滥用的帮助

报告滥用

谢谢! 此内容已经标识给管理员注意。


关于报告滥用的帮助

报告滥用

报告滥用提交失败。 请稍后重试。


developerWorks:登录


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 使用条款

 


当您初次登录到 developerWorks 时,将会为您创建一份概要信息。您在 developerWorks 概要信息中选择公开的信息将公开显示给其他人,但您可以随时修改这些信息的显示状态。您的姓名(除非选择隐藏)和昵称将和您在 developerWorks 发布的内容一同显示。

请选择您的昵称:

当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

(长度在 3 至 31 个字符之间)


单击提交则表示您同意developerWorks 的条款和条件。 使用条款.

 


为本文评分

评论

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=XML
ArticleID=21881
ArticleTitle=技巧: 从 JDOM 转换
publish-date=04012001
author1-email=brett@newInstance.com
author1-email-cc=brett@newInstance.com

标签

Help
使用 搜索 文本框在 My developerWorks 中查找包含该标签的所有内容。

使用 滑动条 调节标签的数量。

热门标签 显示了特定专区最受欢迎的标签(例如 Java technology,Linux,WebSphere)。

我的标签 显示了特定专区您标记的标签(例如 Java technology,Linux,WebSphere)。

使用搜索文本框在 My developerWorks 中查找包含该标签的所有内容。热门标签 显示了特定专区最受欢迎的标签(例如 Java technology,Linux,WebSphere)。我的标签 显示了特定专区您标记的标签(例如 Java technology,Linux,WebSphere)。