您所在的位置: 首页>>前沿技术>>产品>>

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

  • 摘要:随着面向服务架构(SOA)的出现,大部分用户不得不在应用程序中使用XML。在开发过程中,用户可能已经注意到存在多种可以分析和处理XML的模型,包括开源和专有的。所有这些模型都存在一定的优缺点。选择不适合业务需求的模型可能会导致开发时间延长并浪费资源。Apache XMLBeans是一个非常有价值的工具,它提供一种在Java中使用XML的简便方法。在本文中,我们将介绍XMLBeans以及XMLBeans 2.0中的一些有用特性。
  • 标签:XMLBEANS

模式到实例再到模式的过程

inst2xsd工具可作为命令行实用工具使用,但用户也可以编程式地使用API。其目的是采用一个XML实例并创建一个合法模式集。该工具也是可配置的,它提供了用于指定使用哪种设计模式的选项。

该工具还能够将枚举映射到重复值,并能够根据数据类型的最小公分母创建类型。

我们使用lcd:val这个值作为创建最小公分母类型的示例。该文本可由多个内置XML Schema数据类型表示,例如字符串派生的类型(xsd:string、xsd:normalizedString、xsd:token,等等)以及QName类型。在本例中,inst2xsd特性确定类型的方式是查找前缀为lcd的命名空间声明。如果找到该前缀,该类型将是QName,而不是某个可能基于字符串的类型。

现在看一下我们从Jira接收的RSS feed的结果是什么。如果我们已经将feed保存到名为jiraRssFeed.xml的实例中并已将XMLBEANS_HOMEin放在我们的路径中,工作流将如下:

/home/user>inst2xsd
Generates XMLSchema from instance xml documents.
Usage: inst2xsd [opts] [instance.xml]*
Options include:
-design [rd|ss|vb] - XMLSchema design type
rd  - Russian Doll Design - local elements and local types
ss  - Salami Slice Design - global elements and local
types
vb  - Venetian Blind Design (default) - local elements and
global complex types
-simple-content-types [smart|string] - Simple content types
detection (leaf text). Smart is the default
-enumerations [never|NUMBER] - Use enumerations. Default
value is 10.
-outDir [dir] - Directory for output files. Default is '.'
-outPrefix [file_name_prefix] - Prefix for output file names.
Default is 'schema'
-validate - Validates input instances against generated
schemas.
-verbose - print more informational messages
-license - print license information
-help - help information

/home/user>inst2xsd jiraRssFeed.xml -enumerations never
-design rd -verbose -validate
# this generates a schema named schema0.xsd

这将生成名为schema0.xsd的(可配置)文件,并且模式将与下面的片断类似:

 1 <?xml version="1.0" encoding="UTF-8"?>
2 <xs:schema attributeFormDefault="unqualified"
elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
3  <xs:element name="rss">
4    <xs:annotation>
5      <xs:documentation>RSS generated by JIRA 98...
</xs:documentation>
6    </xs:annotation>
7    <xs:complexType>
8      <xs:sequence>
9        <xs:element name="channel">
10          <xs:complexType>
11            <xs:sequence>
12              <xs:element type="xs:string" name="title"/>
13              <xs:element type="xs:anyURI" name="link"/>
14              <xs:element type="xs:string" name="description"/>
15              <xs:element type="xs:string" name="language"/>
15              <xs:element name="item" maxOccurs="unbounded"
minOccurs="0">

从这个片断中我们发现Jira RSS feed所需的所有元素均已定义。

如果用户想要通过其他方式工作,例如从XML Schema开始,XMLBeans的最新版本就提供了这种功能。xsd2inst工具就为用户提供了从模式和全局元素创建示例文档的方式;该实例将包含简单类型的值。上述两种工具的使用使得使用XML实例和模式变得非常简单。

共11页: 上一页 [1] [2] [3] [4] 5 [6] [7] [8] [9] [10] [11] 下一页
【内容导航】
2006年前沿技术频道热点关注
透析SOA的技术支持
BEA World 2006 北京
SOA实施之路
全面解构SOA技术理念
 
 验证码: (点击刷新验证码)   匿名发表
  • Visual C++ 6.0完全自学宝典

  • 作者:强锋科技,朱洪波
  • Visual C++ 6.0是微软公司为程序人员提供的Visual Studio 6.0工具套件中的重要组成部分。本书由浅入深地介绍使用Visual C++ 6.0..
Copyright©2005-2008 51CTO.COM 版权所有