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

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

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

在项目的这个阶段,我们就拥有了一个模式,使用这个模式可以通过scomp实用工具创建一个XMLBeans类型jar,并可开始处理业务逻辑以及先前尝试收集的质量指标。

通过查看Jira RSS feed实例,我们发现我们关注的bug详细信息放在名为item的元素中,而且生成的模式将item元素作为数组。这意味着,如果我们想要获得可能出现在所有项中的信息,就需要迭代所有项。现在我们看看如何通过一些代码实现这个目标。在下面的代码中,我们会遇到名字被指定为方法参数的用户导致的所有问题:

 1 public Vector getItemsFromReporter(String reporter) {
2
3  // Get the Jira RSS feed instance from a URL
4  URL jiraFeedUrl; = new URL("");

6  // Get instance objects
7  RssDocument rssDoc = RssDocument.Factory.parse(jiraFeedUrl);
8  RssDocument.Rss rss = rssDoc.getRss();
9  RssDocument.Rss.Channel channel = rss.getChannel();
10 
11  // We will use this object to get most of our data
12  RssDocument.Rss.Channel.Item[] items = channel.getItemArray();
13
14  //We will store all of the valid results in a vector
15  Vector results = new Vector();
16 
17  for (int i = 0; i < items.length; i++) {
18   RssDocument.Rss.Channel.Item item = items[i];
19 
20   //Add item to results vector when reporter == username
21   if(item.getReporter().getUsername().compareTo(reporter) == 0)
22     results.add(item);
23   }
24  }
25 
26  return results;
27 }

可以看出,这是非常整洁的Java代码。但是,当项数变大时,使用此代码也会影响性能。在最新的XMLBeans版本中,新增了两个新特性来帮助解决这些问题。第一个特性是对JDK 5.0泛型的支持,第二个特性是对XPath和Xquery的支持。我们来看看如何将泛型用于XMLBeans。

将泛型用于XMLBeans

很明显,JDK 5.0泛型可帮助创建参数化的类和方法。Collections API是XMLBeans中首批使用泛型的API之一。在XML Schema中,当元素包含的maxOccurs属性的值大于1时,默认情况下XMLBeans将针对这些类型创建一个Java数组。为了启用泛型,需要将一个附加参数添加到scomp,并需要使用一个兼容JDK 5.0的虚拟机。

默认情况下,用于从channel获取item元素的API包含如下方法:

 RssDocument.Rss.Channel.Item getItemArray(int i)
获取item元素
 RssDocument.Rss.Channel.Item []getItemArray()
获取所有item元素的数组
 void setItemArray(int i,RssDocument.Rss.Channel.Item item)
设置item元素
 void setItemArray(RssDocument.Rss.Channel.Item[] itemArray)
设置所有item元素的数组


共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 版权所有