背景:在webservice的开发过程中涉及到这一知识点,又必要来学习一下。
1 根据编写的schema来生成对应的java实体
1.1 实战
xcj命令有schema文件生成Java实体类
1、使用方法
xjc fileName.xsd -d 生成java实体类的目录 -p 生成的包名
2. eg: xjc catalog.xsd -d d: est -p com.xjc.bean
xjc szfs.tws.biz.info.billchange.xsd -d E:Work直连接口改造文档接口直连接口schemainfo -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.,()/='+?!"%&*<>;@# -_]{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>
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> * <complexType name="BillChange"> * <complexContent> * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> * <sequence> * <element name="subdate" type="{szfs.tws.info.billchange}Exact8Text"/> * <element name="outid" type="{szfs.tws.info.billchange}OutId"/> * <element name="chgtype" type="{szfs.tws.info.billchange}chgtypeEnum"/> * <element name="corpno" type="{szfs.tws.info.billchange}OrgCode"/> * <element name="billperiod" type="{szfs.tws.info.billchange}Exact6NumericText" minOccurs="0"/> * <element name="billno" type="{szfs.tws.info.billchange}Max32Text"/> * <element name="feeitem" type="{szfs.tws.info.billchange}Exact5Text"/> * <element name="currency" type="{szfs.tws.info.billchange}Exact3Text"/> * <element name="billmoney" type="{szfs.tws.info.billchange}Max13MoneyGt0Text" minOccurs="0"/> * <element name="feemoney" type="{szfs.tws.info.billchange}Max13MoneyGe0Text" minOccurs="0"/> * <element name="effectdate" type="{szfs.tws.info.billchange}Exact8Text"/> * <element name="duedate" type="{szfs.tws.info.billchange}Exact8Text"/> * <element name="custno" type="{szfs.tws.info.billchange}Max32Text" minOccurs="0"/> * <element name="custname" type="{szfs.tws.info.billchange}Max60Text" minOccurs="0"/> * <element name="tel" type="{szfs.tws.info.billchange}Max30Text" minOccurs="0"/> * <element name="memo" type="{szfs.tws.info.billchange}Max127Text" minOccurs="0"/> * </sequence> * </restriction> * </complexContent> * </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