xmlbeans-2.5.0 生成与xml结构相同的javabean对象

时间:2021-05-02 19:08:32

下载xmlbeans

假如解压路径为:

E:/tools/xmlbeans-2.5.0/

 

要生成的定义文件及javabean对象路径为:

E:/tools/xmlbeans-2.5.0/temp

把要解析的xml文件offer_example.xml 放到E:/tools/xmlbeans-2.5.0/temp目录下。

 

接下来执行以下步骤

 

1:

 

E:/tools/xmlbeans-2.5.0/bin>

2:

inst2xsd -design ss -simple-content-types smart -enumerations never -outDir E:/tools/xmlbeans-2.5.0/temp E:/tools/xmlbeans-2.5.0/temp/offer_example.xml

 

 

3:在E:/tools/xmlbeans-2.5.0/temp目录下生成三个xsd定义文件,接下来会以xsd定义文件生成javabean,如果要改变某些具体字段的类型,请在xsd中找到对应的结点,将类型进行相对的修改即可。

 

有需要生成包路径需求的情况下,需要

添加一个config.xsdconfig文件

<?xmlversion="1.0" encoding="UTF-8"?>

<xb:configxmlns:xb="http://xml.apache.org/xmlbeans/2004/02/xbean/config">

<xb:namespace>

<xb:package>com.ace.carinfo</xb:package>

</xb:namespace>

</xb:config>


4:

scomp -src e:/tools/xmlbeans-2.5.0/temp -javasource 1.5 e:/tools/xmlbeans-2.5.0/temp/schema0.xsd e:/tools/xmlbeans-2.5.0/temp/schema1.xsd e:/tools/xmlbeans-2.5.0/temp/schema2.xsd e:/tools/xmlbeans-2.5.0/temp/schema3.xsd

 config.xsdconfig 需要生成包路径的话,结尾加上。

注:schema0 ,schema1, schema2 ,schema3.xsd 是根据xml文件的层级自动生成的定义文件,如果有多个依次类推。

 

最后会在E:/tools/xmlbeans-2.5.0/bin目录下生成一个xmltype.jar

拷贝到项目中即可引用

 

import de.volkswagen.star.server.schnittstellen.stab.part.PartDocument;

具体路径参考生成的javabean文件。

 

注:

实际应用中,步骤2以smart方式自动生成的节点类型可能会不正确,所以我建议将所有类型全设置为string

将第2步改为如下:

inst2xsd -enumerations never -design rd -simple-content-types string -verbose -validate -outDir E:/tools/xmlbeans-2.5.0/temp E:/tools/xmlbeans-2.5.0/temp/offer_example.xml


上述第4步的时候,有时会产生以下错误:

D:\xmlbeans-2.6.0\bin>scomp -src D:/xmlbeans-2.6.0/temp -javasource -compiler %JAVA_HOME%\bin\javac D:/xmlbeans-2.6.0/temp/schema0.xsd
Time to build schema type system: 0.397 seconds
Time to generate code: 0.064 seconds
java.io.IOException: Cannot run program "D:\xmlbeans-2.6.0\bin\javac": CreateProcess error=2, ?????????
java.io.IOException: CreateProcess error=2, ?????????
java.io.IOException: Cannot run program "D:\xmlbeans-2.6.0\bin\javac": CreateProcess error=2, ?????????
        at java.lang.ProcessBuilder.start(Unknown Source)
        at java.lang.Runtime.exec(Unknown Source)
        at java.lang.Runtime.exec(Unknown Source)
        at org.apache.xmlbeans.impl.tool.CodeGenUtil.externalCompile(CodeGenUtil.java:231)
        at org.apache.xmlbeans.impl.tool.SchemaCompiler.compile(SchemaCompiler.java:1154)
        at org.apache.xmlbeans.impl.tool.SchemaCompiler.main(SchemaCompiler.java:373)
Caused by: java.io.IOException: CreateProcess error=2, ?????????
        at java.lang.ProcessImpl.create(Native Method)
        at java.lang.ProcessImpl.<init>(Unknown Source)
        at java.lang.ProcessImpl.start(Unknown Source)
        ... 6 more
BUILD FAILED

解决办法:

配置XMLBean环境变量,JAVA_HOME改由以下命令执行即可。

D:\xmlbeans-2.6.0\bin>scomp -src D:/xmlbeans-2.6.0/temp -compiler %JAVA_HOME%\bin\javac D:/xmlbeans-2.6.0/temp/schema0.xsd

------------------------------------------------------------------------------------------------------------

XMLBeans 最新版本2.6.0

最近在项目中使用了一下,非常方便。下载解压之后,

1. 配置环境变量:

XMLBEANS_HOME:E:\Download\Production Development\xmlbeans-2.6.0\xmlbeans-2.6.0

添加到Path: %XMLBEANS_HOME%\bin;

2. 在E:\Download\Production Development\xmlbeans-2.6.0\xmlbeans-2.6.0目录下创建temp文件夹,方便管理操作。

把XSD 定义文件放到temp夹下,比如:xmldefine.xsd

3. CMD

E:

cd E:\Download\Production Development\xmlbeans-2.6.0\xmlbeans-2.6.0\temp

scomp -out xmlportletfactory.jar xmldefine.xsd

OK 了,在temp文件夹下会生成一个叫xmldefine.jar

4. 在java项目中引入 xbean.jar以及xmldefine.jar

假如XML中父节点是ace 那么在java中就可以像下面这样使用

AceDocument ad = AceDocument.Factory.newInstance();

创建子节点ad.addNewXXX();


以上就是新版本的应用,暂时写这么多,继续使用研究中...

不知道大连现在各IT公司的形势如何呀+—-+