(转) 使用jdk的xjc命令由schema文件生成相应的实体类

本文介绍如何使用XSD文件生成对应的Java实体类,并提供了一个实际案例。文章详细解释了命令行工具xjc的用法及其参数设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:在webservice的开发过程中涉及到这一知识点,又必要来学习一下。

1 根据编写的schema来生成对应的java实体

1.1 实战

xcj命令有schema文件生成Java实体类

1、使用方法
   xjc fileName.xsd -d 生成java实体类的目录 -p 生成的包名

2. eg: xjc catalog.xsd -d d: \test -p com.xjc.bean

xjc szfs.tws.biz.info.billchange.xsd -d E:\Work\直连接口改造\文档\接口\直连接口schema\info -p szfs.tws.biz.entity.info.billchange

xjc szfs.tws.biz.info.billchange.xsd:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="szfs.tws.info.billchange"
    targetNamespace="szfs.tws.info.billchange" elementFormDefault="qualified">
    <xs:element name="BillChange" type="BillChange" />
    <xs:complexType name="BillChange">
        <xs:sequence>
            <xs:element name="subdate" type="Exact8Text"/>
            <xs:element name="outid" type="OutId"/>
            <xs:element name="chgtype" type="chgtypeEnum" />
            <xs:element name="corpno" type="OrgCode" />
            <xs:element name="billperiod" type="Exact6NumericText" minOccurs="0"/>
            
            <xs:element name="billno" type="Max32Text" />
            <xs:element name="feeitem" type="Exact5Text" />
            <xs:element name="currency" type="Exact3Text" />
            <xs:element name="billmoney" type="Max13MoneyGt0Text" minOccurs="0"/>
            <xs:element name="feemoney" type="Max13MoneyGe0Text" minOccurs="0"/>
            
            <xs:element name="effectdate" type="Exact8Text" />
            <xs:element name="duedate" type="Exact8Text" />
            <xs:element name="custno" type="Max32Text" minOccurs="0"/>
            <xs:element name="custname" type="Max60Text" minOccurs="0"/>
            <xs:element name="tel" type="Max30Text" minOccurs="0"/>
            
            <xs:element name="memo" type="Max127Text" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    
    <xs:simpleType name="OutId">
        <xs:restriction base="xs:string">
            <xs:minLength value="1" />
            <xs:maxLength value="64"/>
            <xs:pattern value="[a-zA-Z0-9_-]{1,64}"/>
        </xs:restriction>
    </xs:simpleType>
    
    
    <xs:simpleType name="Exact6NumericText">
        <xs:restriction base="xs:string">
            <xs:minLength value="6"/>
            <xs:maxLength value="6"/>
            <xs:pattern value="[0-9]{1,6}"/>
        </xs:restriction>
    </xs:simpleType>
    
    <xs:simpleType name="OrgCode">
        <xs:restriction base="xs:string">
            <xs:minLength value="8" />
            <xs:maxLength value="14"/>
        </xs:restriction>
    </xs:simpleType>
    
    <xs:simpleType name="Exact3Text">
        <xs:restriction base="xs:string">
            <xs:minLength value="3"/>
            <xs:maxLength value="3"/>
        </xs:restriction>
    </xs:simpleType>
    
    <xs:simpleType name="Exact5Text">
        <xs:restriction base="xs:string">
            <xs:minLength value="5"/>
            <xs:maxLength value="5"/>
        </xs:restriction>
    </xs:simpleType>
    
    <xs:simpleType name="Exact8Text">
        <xs:restriction base="xs:string">
            <xs:minLength value="8"/>
            <xs:maxLength value="8"/>
        </xs:restriction>
    </xs:simpleType>
    
    <xs:simpleType name="Max13MoneyGe0Text">
        <xs:restriction base="xs:decimal">
            <xs:fractionDigits value="2" />
            <xs:totalDigits value="15" />
            <xs:minInclusive value="0" />
            <xs:pattern value="[0-9]{1,13}(\.[0-9]{1,2})?"></xs:pattern>
        </xs:restriction>
    </xs:simpleType>    

    <xs:simpleType name="Max13MoneyGt0Text">
        <xs:restriction base="xs:decimal">
            <xs:fractionDigits value="2" />
            <xs:totalDigits value="15" />
            <xs:minExclusive value="0" />
            <xs:pattern value="[0-9]{1,13}(\.[0-9]{1,2})?"></xs:pattern>
        </xs:restriction>
    </xs:simpleType>
    
    <xs:simpleType name="chgtypeEnum">
        <xs:restriction base="xs:string">
            <xs:enumeration value="0"/>
            <xs:enumeration value="1"/>
            <xs:enumeration value="2"/>
        </xs:restriction>
    </xs:simpleType>
    
    <xs:simpleType name="Max8NumericText">
        <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
            <xs:maxLength value="8"/>
            <xs:pattern value="[0-9]{1,8}"/>
        </xs:restriction>
    </xs:simpleType>
    
    <xs:simpleType name="Max6NumericText">
        <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
            <xs:maxLength value="6"/>
            <xs:pattern value="[0-9]{1,6}"/>
        </xs:restriction>
    </xs:simpleType>    

    <xs:simpleType name="Max30Text">
        <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
            <xs:maxLength value="30"/>
            <xs:pattern value="[0-9a-zA-Z_-]{1,30}"/>
        </xs:restriction>
    </xs:simpleType>
    
    <xs:simpleType name="Max32Text">
        <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
            <xs:maxLength value="32"/>
            <xs:pattern value="[a-zA-Z0-9.,()/=&apos;+?!&quot;%&amp;*&lt;&gt;;@# -_]{1,32}"/>
        </xs:restriction>
    </xs:simpleType>
    
    <xs:simpleType name="Max60Text">
        <xs:restriction base="xs:string">
            <xs:minLength value="1" />
            <xs:maxLength value="60"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="Max64Text">
        <xs:restriction base="xs:string">
            <xs:minLength value="1" />
            <xs:maxLength value="64"/>
        </xs:restriction>
    </xs:simpleType>
        
    <xs:simpleType name="Max127Text">
        <xs:restriction base="xs:string">
            <xs:minLength value="1" />
            <xs:maxLength value="127"/>
        </xs:restriction>
    </xs:simpleType>
</xs:schema>
View Code

 

BillChange.java:

//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
// Any modifications to this file will be lost upon recompilation of the source schema. 
// Generated on: 2017.07.10 at 10:35:20 AM CST 
//


package szfs.tws.biz.entity.info.billchange;

import java.math.BigDecimal;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;


/**
 * <p>Java class for BillChange complex type.
 * 
 * <p>The following schema fragment specifies the expected content contained within this class.
 * 
 * <pre>
 * &lt;complexType name="BillChange">
 *   &lt;complexContent>
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       &lt;sequence>
 *         &lt;element name="subdate" type="{szfs.tws.info.billchange}Exact8Text"/>
 *         &lt;element name="outid" type="{szfs.tws.info.billchange}OutId"/>
 *         &lt;element name="chgtype" type="{szfs.tws.info.billchange}chgtypeEnum"/>
 *         &lt;element name="corpno" type="{szfs.tws.info.billchange}OrgCode"/>
 *         &lt;element name="billperiod" type="{szfs.tws.info.billchange}Exact6NumericText" minOccurs="0"/>
 *         &lt;element name="billno" type="{szfs.tws.info.billchange}Max32Text"/>
 *         &lt;element name="feeitem" type="{szfs.tws.info.billchange}Exact5Text"/>
 *         &lt;element name="currency" type="{szfs.tws.info.billchange}Exact3Text"/>
 *         &lt;element name="billmoney" type="{szfs.tws.info.billchange}Max13MoneyGt0Text" minOccurs="0"/>
 *         &lt;element name="feemoney" type="{szfs.tws.info.billchange}Max13MoneyGe0Text" minOccurs="0"/>
 *         &lt;element name="effectdate" type="{szfs.tws.info.billchange}Exact8Text"/>
 *         &lt;element name="duedate" type="{szfs.tws.info.billchange}Exact8Text"/>
 *         &lt;element name="custno" type="{szfs.tws.info.billchange}Max32Text" minOccurs="0"/>
 *         &lt;element name="custname" type="{szfs.tws.info.billchange}Max60Text" minOccurs="0"/>
 *         &lt;element name="tel" type="{szfs.tws.info.billchange}Max30Text" minOccurs="0"/>
 *         &lt;element name="memo" type="{szfs.tws.info.billchange}Max127Text" minOccurs="0"/>
 *       &lt;/sequence>
 *     &lt;/restriction>
 *   &lt;/complexContent>
 * &lt;/complexType>
 * </pre>
 * 
 * 
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "BillChange", propOrder = {
    "subdate",
    "outid",
    "chgtype",
    "corpno",
    "billperiod",
    "billno",
    "feeitem",
    "currency",
    "billmoney",
    "feemoney",
    "effectdate",
    "duedate",
    "custno",
    "custname",
    "tel",
    "memo"
})
public class BillChange {

    @XmlElement(required = true)
    protected String subdate;
    @XmlElement(required = true)
    protected String outid;
    @XmlElement(required = true)
    protected String chgtype;
    @XmlElement(required = true)
    protected String corpno;
    protected String billperiod;
    @XmlElement(required = true)
    protected String billno;
    @XmlElement(required = true)
    protected String feeitem;
    @XmlElement(required = true)
    protected String currency;
    protected BigDecimal billmoney;
    protected BigDecimal feemoney;
    @XmlElement(required = true)
    protected String effectdate;
    @XmlElement(required = true)
    protected String duedate;
    protected String custno;
    protected String custname;
    protected String tel;
    protected String memo;

   //省略get/set

 

1.2 扩展

首先确保计算机已经安装了jdk,且在环境变量中配置了jdk路径。

我的计算机安装的是1.7,就以这个为例吧!

1.进入dos窗口

1.指定某一个xsd文件生成指定名称的Java

进入xsd文件所在目录,我的在D盘,所以我 D:进入D盘

然后开始执行下面语法(xxxxx.xsd 为要生成的xsd文件 xxxxx为目录)

xjc xxxxx.xsd -p xxxxx.bean;

2.将所有的xsd文件生成,并指定生成目录

xjc *.xsd -p com.cpp.interconnection.bean

然后完毕后,目录和类已经全部生成,大功搞成。

1

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值