【发布时间】:2014-09-12 14:42:39
【问题描述】:
我使用 xsd 架构,例如:
<xsd:element name="TrxIdRs" type="TrxIdRs_Type"/>
<xsd:complexType name="TrxIdRs_Type">
<xsd:simpleContent>
<xsd:extension base="xsd:int">
<xsd:attribute ref="trxStatusCode" use="required"/>
<xsd:attribute ref="trxStatusDescr" use="required"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:attribute name="trxStatusCode" type="xsd:int"/>
<xsd:attribute name="trxStatusDescr" type="xsd:string"/>
表示 XML 类似:
<TrxIdRs trxStatusCode="1" trxStatusDescr="descr">
111000111
</TrxIdRs>
但 Castor 只为此架构生成 BigDecimal 类型:
public abstract class TrxIdRs_Type implements java.io.Serializable {
//--------------------------/
//- Class/Member Variables -/
//--------------------------/
/**
* internal content storage
*/
private java.math.BigDecimal _content;
/**
* Field _trxStatusCode.
*/
private java.lang.Integer _trxStatusCode;
是否有任何其他变体可以编写 xsd 或配置 castor 以在生成的 bean 中具有原始类型?
【问题讨论】:
-
你能添加完整的xsd吗?... trxStatusCode和trxStatusDescr的声明在哪里?
-
我无法显示完整的 xsd - 它太大了。添加了属性描述和元素声明
-
我使用了 Jaxb,如果您更改 xsd 中的类型:decimal 工作正常;)
-
我无法更改框架,其他 xml 元素会有太多更改。 (约22000)
-
尝试使用 xsd:restriction 代替 xsd:extension。