繁体   English   中英

XSD 到 Java bean

[英]XSD to java beans

我是 XSD 格式的新手。 我正在尝试使用 xjc 将一个 xsd 转换为 java bean。但是在转换时我得到了多个 bean 而不是只得到一个 bean。如何从 XSD 获取一个 bean?

下面是我的xsd。

    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
        <xs:element name="TradeMessage" type="TradeMessageType"/>
        <xs:simpleType name="empty-string">
            <xs:restriction base="xs:string">
                <xs:enumeration value="" />
            </xs:restriction>
        </xs:simpleType>
        <xs:simpleType name="decimal-or-empty">
            <xs:union memberTypes="xs:decimal empty-string" />
        </xs:simpleType>
        <xs:complexType name="contractingEntityType">
            <xs:sequence>
                <xs:element type="tradingAccountType" name="tradingAccount"/>
            </xs:sequence>
        </xs:complexType>
        <xs:complexType name="executingEntityType">
            <xs:sequence>
                <xs:element type="tradingAccountType" name="tradingAccount"/>
            </xs:sequence>
        </xs:complexType>
        <xs:complexType name="tradeFeesType">
            <xs:choice maxOccurs="unbounded" minOccurs="0">
                <xs:element type="tradeFees_itemType" name="tradeFees_item"/>
            </xs:choice>
        </xs:complexType>
        <xs:complexType name="settlementCurrencyType">
            <xs:sequence>
                <xs:element type="xs:string" name="iSOCode"/>
            </xs:sequence>
        </xs:complexType>
        <xs:complexType name="tradingAccountType">
            <xs:sequence>
                <xs:element type="xs:string" name="uniqueID"/>
            </xs:sequence>
        </xs:complexType>
        <xs:complexType name="currencyType">
            <xs:sequence>
                <xs:element type="xs:string" name="iSOCode"/>
            </xs:sequence>
        </xs:complexType>
        <xs:complexType name="tradingInstrumentType">
            <xs:sequence>
                <xs:element type="xs:string" name="CUSIP"/>
            </xs:sequence>
        </xs:complexType>
        <xs:complexType name="tradeFees_itemType">
            <xs:sequence>
                <xs:element type="chargeCodeType" name="chargeCode"/>
                <xs:element type="xs:string" name="inConsideration"/>
                <xs:element type="currencyType" name="currency"/>
                <xs:element type="xs:decimal" name="currencyValue"/>
            </xs:sequence>
        </xs:complexType>
        <xs:complexType name="IncomingTradeMessageType">
            <xs:sequence>
                <xs:element type="IncomingTradeType" name="IncomingTrade"/>
            </xs:sequence>
        </xs:complexType>
        <xs:complexType name="TradeMessageType">
            <xs:sequence>
                <xs:element type="IncomingTradeMessageType" name="IncomingTradeMessage"/>
            </xs:sequence>
            <xs:attribute type="xs:string" name="schemaVersion"/>
        </xs:complexType>
        <xs:complexType name="chargeCodeType">
            <xs:sequence>
                <xs:element type="xs:string" name="name"/>
            </xs:sequence>
        </xs:complexType>
        <xs:complexType name="theirTradingAccountType">
            <xs:sequence>
                <xs:element type="xs:string" name="uniqueID"/>
                <xs:element type="xs:string" name="organisationUniqueID"/>
            </xs:sequence>
        </xs:complexType>
        <xs:complexType name="tradeCurrencyType">
            <xs:sequence>
                <xs:element type="xs:string" name="iSOCode"/>
            </xs:sequence>
        </xs:complexType>
        <xs:complexType name="transactionTypeType">
            <xs:sequence>
                <xs:element type="xs:string" name="uniqueID"/>
            </xs:sequence>
        </xs:complexType>
        <xs:complexType name="channelType">
            <xs:sequence>
                <xs:element type="xs:string" name="name"/>
            </xs:sequence>
        </xs:complexType>
        <xs:complexType name="IncomingTradeType">
            <xs:sequence>
                <xs:element type="xs:string" name="blockTradeReference"/>
                <xs:element type="xs:string" name="sourceReference"/>
                <xs:element type="xs:string" name="sourceVersion"/>
                <xs:element type="xs:decimal" name="nominal"/>
                <xs:element type="xs:decimal" name="price"/>
                <xs:element type="xs:string" name="tradeDate"/>
                <xs:element type="xs:string" name="valueDate"/>
                <xs:element type="transactionTypeType" name="transactionType"/>
                <xs:element type="tradingInstrumentType" name="tradingInstrument"/>
                <xs:element type="tradeCurrencyType" name="tradeCurrency"/>
                <xs:element type="xs:string" name="cancelled"/>
                <xs:element type="xs:string" name="tradeTime"/>
                <xs:element type="tradeFeesType" name="tradeFees"/>
                <xs:element type="xs:decimal" name="grossConsideration"/>
                <xs:element type="xs:decimal" name="netConsideration"/>
                <xs:element type="xs:decimal" name="settlementConsideration"/>
                <xs:element type="settlementCurrencyType" name="settlementCurrency"/>
                <xs:element type="decimal-or-empty" name="settlementExRate"/>
                <xs:element type="xs:string" name="settlementExRateDirection"/>
                <xs:element type="theirTradingAccountType" name="theirTradingAccount"/>
                <xs:element type="executingEntityType" name="executingEntity"/>
                <xs:element type="contractingEntityType" name="contractingEntity"/>
                <xs:element type="decimal-or-empty" name="calculatedNetPrice"/>
                <xs:element type="xs:string" name="dealingCapacity"/>
                <xs:element type="xs:string" name="agreedPriceIndicator"/>
                <xs:element type="xs:string" name="orderReference"/>
                <xs:element type="xs:string" name="lastAmendedOnBusinessDate"/>
                <xs:element type="xs:string" name="creationAsatDate"/>
                <xs:element type="xs:string" name="bpsBranchAccountNumber"/>
                <xs:element type="xs:string" name="bpsAccountType"/>
                <xs:element type="xs:string" name="shortSell"/>
                <xs:element type="decimal-or-empty" name="facilitationPercentage"/>
                <xs:element type="xs:string" name="isStepOut"/>
                <xs:element type="xs:string" name="stepOutBrokerMPID"/>
                <xs:element type="xs:string" name="bargainConditionFO"/>
                <xs:element type="channelType" name="channel"/>
            </xs:sequence>
        </xs:complexType>
    </xs:schema>

这个 XSD 为我提供了不同属性的不同 bean,但实际上我只需要一个包含所有属性的 bean。 根据我的要求,我将接收输入消息(按照上面的 xsd)并将其直接转换为 java bean 并使用此 bean 进行进一步处理。 如果有其他更好的策略,请告诉我。

这就是 JAXB 的工作方式。 一个复杂的模式类型被映射到一个 Java 类,因为这个模式有很多复杂的类型,你会得到几个 Java 类。 解组 XML 文档时,您将获得一个TradeMessageType实例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM