文档章节

XMLBeans 多个类型xml文件打包合并

王全
 王全
发布于 2009/03/31 14:57
字数 826
阅读 1221
收藏 1

       XmlBeans 方便的使操作xml 面向了对象,稍微看一下文档即可知道怎么使用他.不过官方提供的sample 只是针对单个xml,xsd文件的(比如,读取,写入,打包)。通过例子我们知道如果有一个xml文档和他的schema,我们可以使用scomp命令打包成一个jar文件,这对于项目中有少数的几个文件来说还可以接受。如果一个项目中有十几甚至几十个xml文件,难道每个xml文件都需要打一个jar文件吗?很显然,以上的方案是行不通的。
      下文讲述了作者对于多个xml文件打包合并的经验.

      举例说明,项目中有quote.xml文件和quote_list.xml文件,他们分别代表某只股票信息和某组股票信息.由于2个xml文件的tag比较多,手动编写schema  比较浪费时间,可以使用以下2个方式生成schema

      1,使用stylus studio.步骤如下,打开xml文件,xml菜单下 选择从xml生成架构.具体细节很简单,不在啰嗦

       2,使用trang(java写的xml to schema 的工具),执行 java -jar trang.jar quote.xml quote.xsd,即可在当前文件夹生成quote.xsd

       自动生成的schema可能不是你想要的,这时候你需要稍加修改,比如类型

      至此,已经有了xml文件以及他的结构文件schema。

      接下来,进入本文的重点,打包

      scomp命令为 comp [opts] [dirs]* [schema.xsd]* [service.wsdl]* [config.xsdconfig]*

      有很多命令可以参考帮助,一般打包使用 out参数。假如 所有的xsd 文件都在xsd下 那么执行

      scomp -out quoteserver-xml.jar xsd/quote.xsd,就可以完成打包。但是你会发现生成的jar 文件中,包名是系统默认的noNamespace,你可能需要自己的包。这时需要修改xsd文件,在xsd的根节点下加入 targetNamespace,和xmlns 2个节点(2个节点的内容一般需要一样),这2个节点表示这个xml文件的名字空间,例如

 quote.xml

    http://www.w3.org/2001/XMLSchema" xmlns="http://mi2.finet.com/quoteserver/xml/quote"
 targetNamespace="http://mi2.finet.com/quoteserver/xml/quote" elementFormDefault="qualified" attributeFormDefault="unqualified">
 http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd" />
 

同样对quotes.xml 加入自己的名字空间,如下

http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
 xmlns="http://mi2.finet.com/quoteserver/xml/quotes" targetNamespace="http://mi2.finet.com/quoteserver/xml/quotes">
 http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd" />
 

可以看到,quote和quotes 2个xml分别在quoteserver 项目的xml子项目 quote和quotes包中

执行

scomp -out quoteserver-xml.jar xsd/*xsd,生成 quoteserver-xml.jar文件,可以看到,quote和quotes文件编译后的类文件分别在

com.finet.mi2.quoteserver.xml.quote和com.finet.mi2.quoteserver.xml.quotes 下.

你一定发现规律了,xmlns="http://mi2.finet.com/quoteserver/xml/quotes",一级域名反过来就是com.finet.mi2,一级域名后边的顺着组合就是他quoteserver.xml.quotes. Xmlbeans 就是按照这样的规则进行打包的

  对与比较熟悉xmlbeans 组件的哥们来说,应该知道xmlbeans打包的时候有个config文件,这个文件也是打包需要用到的,他也可以规定打包后的包路径。

 


 

以上用到工具下载地址如下:

xmlbeans2.4 http://xmlbeans.apache.org/

trang  http://www.thaiopensource.com/download/trang-20030619.zip

Generate XSD from XML blog

http://blog.dotkam.com/2008/05/28/generate-xsd-from-xml/

stylus studio http://www.componentsource.com/products/stylus-studio-xml-enterprise/index.html

 

© 著作权归作者所有

王全
粉丝 6
博文 3
码字总数 951
作品 0
深圳
高级程序员
私信 提问
加载中

评论(1)

叶落花开
叶落花开
不错不错,顶一下!经常使用xmlbeans,一直都是手写xsd文件,原来还可以用trang生成xsd啊。多谢楼主分享经验!
使用 XMLBeans 进行编程

深入考察 XMLBeans 的特性和功能。本文通过一个简单的例子介绍 XMLBeans 技术,然后一步一步地介绍编译和绑定的过程,讨论 XML 游标、标记和 XQuery 表达式等高级特性。本文还将讨论 XMLBea...

thinkyoung
2014/12/12
0
0
食品流通许可证 食品卫生许可证 食品经营许可证

XMLBeans的最新版本2.6.0(2012/08/14),支持XML DOM。 XMLBeans 1.0.3最强大的功能之一是可通过提供配置文件定制代码生成。在灵活性、可重用性、简化代码和维护方面,XMLBeans的功能带来了许多...

xml大神
2018/08/26
0
0
Apache XMLBeans 3.0.0 发布,打破向后兼容性

Apache POI 团队很高兴地宣布 XMLBeans 3.0.0 发布。他带来一些新功能和众多错误修复。XMLBeans是一个XML-Java绑定工具,利用它可以很方便地解析XML文档。 主要更新内容如下: XMLBEANS-517...

淡漠悠然
2018/07/08
1K
1
XMLBeans 2.4.0 发布

XMLBeans是一个XML-Java绑定工具,利用它可以很方便地解析XML文档。 新版本包含一些小量的改进内容,包括: Finer grained support for CDATA Upgraded support for Saxon 9 Added more fine...

红薯
2009/06/18
781
1
XMLBeans 2.5.0 发布

XMLBeans是一个XML-Java绑定工具,利用它可以很方便地解析XML文档。 新版本改进内容包括: 1. A "User types" feature allows mapping of Schema simple types to custom user Java classes.......

红薯
2009/12/22
1K
1

没有更多内容

加载失败,请刷新页面

加载更多

Tensorflow 2.0安装

Tensorflow2.0安装环境: Ubuntu 16.04或更高(64位) Windows 7或者更高(64位,且支持python3) 安装Tensorflow 2.0 GPU版本的需要安装NVIDIA相关软件包: NVIDIA驱动 :版本必须410.x或更...

JosiahMg
25分钟前
4
0
TL138/1808/6748F-EasyEVM开发板硬件、CPU、FLASH、RAM

TL138/1808/6748F-EasyEVM是广州创龙基于SOM-TL138/SOM-TL1808/SOM-TL6748F核心板开发的一款开发板。由于SOM-TL138/SOM-TL1808/SOM-TL6748核心板管脚兼容,所以此三个核心板共用同一个底板。...

Tronlong创龙
33分钟前
4
0
百度嵌入式AI解决方案EdgeBoard之内存驱动设计介绍

1. 背景介绍 由于 FPGA 具备可编程和高性能计算的特点,基于FPGA硬件的AI计算加速,正广泛地应用到计算机视觉处理领域。其中极具代表性的部署方式之一就是使用FPGA和CPU组合构成异构计算系统...

AI君
39分钟前
6
0
开放应用模型(OAM):全球首个云原生应用标准定义与架构模型

Kubernetes 项目作为容器编排领域的事实标准, 成功推动了诸如阿里云 Kubernetes (ACK)等云原生服务的迅速增长。但同时我们也关注到,Kubernetes 的核心 API 资源比如 Service、Deploymen...

Mr_zebra
42分钟前
4
0
《Linux操作系统-Exynos4412》编译和安装Busybox

开发环境:Exynos4412-iTOP-4412开发板 现在 Busybox 的配置已经完成了,接下来开始编译 Busybox,在 Ubuntu 的终端输入 “make”命令开始编译 Busybox,如下图。 下图为编译过程中的截图。 ...

书白
45分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部