频 道 直 达 - 新闻 - 读书 - 培训 - 教程 - 前沿 - 组网 - 系统应用 - 安全 - 编程 - 存储 - 操作系统 - 数据库 - 服务器 - 专题 - 产品 - 案例库 - 技术圈 - 博客 - BBS
51CTO.COM_中国领先的IT技术网站
找资料:

XMLBEANS 2.0 —— 一位JAVA开发人员的视点(10)

作者: 出处:dev2dev  (  ) 砖  (  ) 好  评论 ( ) 条  进入论坛
更新时间:2006-07-25 10:53
关 键 词:XMLBEANS
阅读提示:随着面向服务架构(SOA)的出现,大部分用户不得不在应用程序中使用XML。在开发过程中,用户可能已经注意到存在多种可以分析和处理XML的模型,包括开源和专有的。所有这些模型都存在一定的优缺点。选择不适合业务需求的模型可能会导致开发时间延长并浪费资源。Apache XMLBeans是一个非常有价值的工具,它提供一种在Java中使用XML的简便方法。在本文中,我们将介绍XMLBeans以及XMLBeans 2.0中的一些有用特性。

上面的错误文本提到了实例的名称,并告诉我们地址的末尾缺少一些应有的元素。在这个小示例中,这是有点用处的,但没有行号很难找到起点。现在我们将这个代码文本与新版本 中的新增错误代码特性进行比较:

/home/user>validate errorcode.xsd errorcode.xml

errorcode.xml:4: error: cvc-complex-type.2.4a: Expected elements
'city state' instead of 'country' here in element
address://xmlbeans.beaworld.com/

errorcode.xml:4: error: cvc-complex-type.2.4c: Expected elements
'zipcode' before the end of the content in element
address://xmlbeans.beaworld.com/

与XMLBeans的1.0版本中的错误文本相比,新的错误文本有很大的改进。两个错误文本都提到了实例,但新错误代码还提供了行号、问题严重程度、附录C模式参考以及更清楚的错误消息。而且,使用新的错误代码,我们发现错误代码cvc-complex-type.2.4a和cvc-complex-type.2.4c还提及更多造成故障的问题。同样,这些错误代码也分别对应于模式规范中一个可使用URL访问的位置。

刚刚我们介绍了如何通过命令行获取详细的错误文本,现在介绍如何以编程方式获取错误信息:

 1 // Create the error listener and XmlOptions
2 LinkedList list = new LinkedList();
3 XmlOptions opts = new XmlOptions().setErrorListener(list);
4
5 // Load the instance
6 File instance = new File("<SOME_PATH> rrorcodes.xml");
7 AddressDocument ad = AddressDocument.Factory.parse(instance);
8
9 // If there are errors, making a method call like this will
10 // populate the error listener
11 ad.validate(opts);
12
13 // Since we know there are errors, let's
14 // look at how to get at the data
15 for(int i=0; i < errors.size(); i++) {
16
17   // Cast list object to an XmlError
// type XmlError e = (XmlError)
18   errors.get(i);
19  
20   // Now, let's get at all the information about the error
21   // This will be the location of the error in the instance
22   System.out.println("["+e.getLine()+","+e.getColumn()+"]-" +
e.getSeverity())
23   // Information about the error
24   System.out.println(e.getErrorCode() + ": " +e.getMessage());
25 }

请看此代码片断,以编程方式访问错误信息并不比从命令行获取类似信息困难多少。

性能提升

用户可能不会注意到以前的特性,但一定会注意到它对开发工作的影响。如果新版本无法带来性能提升,那它还有什么好处呢?

与在XMLBeans 1.0中一样,性能对于2.0版本极为重要。在大多数情况下,与1.0相比,2.0版本性能有了10%到60%的提升。导致性能提升的原因有许多,其中最重要的是完全不同的存储架构。在1.0版本中,使用了一个名为splay tree的数据结构使所有存储在XML Store中的内容与影响XML数据的操作同步。对于不熟悉它的用户,splay tree可以理解为支持O(log N)次Find、Insert和Delete操作的平衡树。这种数据结构与其他此类树的差别在于它不维持显式的平衡条件。其详细程度超出了用户在大多数情况下的需要。2.0版本使用了一个较为简单的架构,提供较少的复制和较少的对象。

在对XML数据执行任何操作时,XMLBeans都会加载一个XML Store。XMLBeans总是加载一个XML Store,然后在Store上提供一个绑定视图。与直接解组到Java对象的其他Java/XML绑定框架相比,此绑定视图与完整的XML Infoset真实性通常导致额外的开销。这使得XMLBeans的性能一直是一个障碍,从而消弱了额外的特性与信息所带来的好处。对于运行时性能,人们主要关注的就是XML Store方面,并尽可能地使Store的性能得到提高。

在对XML Store进行改写时,新增了一个特性,该特性使得使用XMLBeans进行编程可以有更好的性能,并且更易于使用。此特性即DOM Level II支持。DOM是Document Object Model(文档对象模型)的简写,它提供了一个用于处理XML数据的接口。Level II则指定哪些接口是可用的。它与SAX的区别在于XML信息保存在内存中。


共11页: 上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] 10 [11] 下一页
【内容导航】
发表
查看
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 领 先 的 IT 技 术 网 站 ·
技 术 成 就 梦 想
·Ajax的应用开发 (查看118447次)
·SOA 面向服务架构 (查看60186次)
·AJAX技术汇总 (查看27661次)
·Ajax技术简介 (查看19629次)
·SOA概览 (查看16582次)
订阅技术快讯
电子杂志下载
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。
名称:Vista精品应用黄皮书
简介:《Vista精品应用黄皮书》囊括了Vista的各方面内容。此次的精简版,是将里面的内容做了提取,便于用户下载和使用。内容包含了各种Vista的安装与实施、技巧与解析以及各种Vista相关学习文档和相关软件的安全下载。该电子书是了解和应用Vista人员必备的工具手册,并且也是第一本
名称:2006中国IT论坛精品集合
简介:本书由“51CTO论坛推广联盟”制作完成。书中所有内容均来自各联盟成员的论坛(网站)。制作本书的目的是为了集中大家的优势资源,将更多更精彩的内容带给广大技术爱好者。本书是联盟成立以来制作的第一本书。
关键字阅读
频道精选
主编信箱 热线:010-66476606 告诉我们您想看的:专题 文章
关于我们 | 诚聘英才 | 联系我们 | 网站大事 | 意见反馈 | 网站地图
Copyright©2005-2007 51CTO.COM 版权所有