如何构建 JAXB 模型以匹配我的 XML?
How to build a JAXB model to match my XML?
我需要用 JAXB 处理这个 XML,但我不确定如何创建一个对象模型来匹配它。
<UI5SOLTGET>
<Form FrmName="U5_SolTar" FrmTit="Solicitud de VOUCHER" >
<FormItems FrmIte="1" FrmLab="Numero de Serie" FrmVal="" FrmData="SER" FrmType="T3" FrmRest="" FrmEna="true" />
<FormItems FrmIte="2" FrmLab="Numero de Voucher" FrmVal="" FrmData="VOU" FrmType="N9" FrmRest="" FrmEna="true" />
<FormItems FrmIte="3" FrmLab="Fecha Vencimiento" FrmVal="" FrmData="FECP" FrmType="F" FrmRest="!" FrmEna="true" />
<FormItems FrmIte="4" FrmLab="Es XNET" FrmVal="" FrmData="XNET" FrmType="B" FrmRest="" FrmEna="true" />
<FormItems FrmIte="5" FrmLab="Numero de Trajeta" FrmVal="" FrmData="TAR" FrmType="T20" FrmRest="" FrmEna="true" />
<FormItems FrmIte="6" FrmLab="Plan de la Tarjeta" FrmVal="" FrmData="PLAN" FrmType="N3" FrmRest="" FrmEna="true" />
<FormItems FrmIte="7" FrmLab="Numero de Cartera" FrmVal="" FrmData="CAR" FrmType="N3" FrmRest="" FrmEna="true" />
<FormItems FrmIte="8" FrmLab="Numero de Autorizacion" FrmVal="" FrmData="DT1" FrmType="T12" FrmRest="" FrmEna="true" />
<FormItems FrmIte="9" FrmLab="Numero de Lote" FrmVal="" FrmData="DT2" FrmType="T12" FrmRest="" FrmEna="true" />
<FormItems FrmIte="10" FrmLab="Numero de Ticket" FrmVal="" FrmData="DT3" FrmType="T12" FrmRest="" FrmEna="true" />
<FormItems FrmIte="11" FrmLab="VISA Itau [C]red/[D]eb." FrmVal="" FrmData="CRDB" FrmType="T1" FrmRest="C|D" FrmEna="true" />
</Form>
</UI5SOLTGET>
Java 型号
对于您的用例,您需要:
- 一个
FormItems
class。此 class 似乎已将其所有数据映射到 XML 属性,因此您将在每个映射属性上使用 @XmlAttribute
。
- 它们有很多
FormItems
个元素,因此它们将被集合引用。父元素包含映射数据,因此您将无法利用 @XmlElementWrapper
注释,并且需要一个具有 List<FormItems>
属性 的 Form
class。
- 您还需要一个 class 对应于用
@XmlRootElement
注释的根元素。
映射您的 Java 模型
获得 Java 模型后,您需要调整其元数据以确保它与您想要 read/write 的 XML 相匹配。最简单的方法是填充您的对象模型并对其进行编组,并记下它与您的目标不同的地方 XML。 JAXB 不需要任何注释,因此您可以立即开始执行此操作。
由于所有 XML 元素和属性都以大写字母开头,您会发现您需要利用 name
属性 对 @XmlRootElement
的所有使用, @XmlElement
,以及 @XmlAttribute
。
我需要用 JAXB 处理这个 XML,但我不确定如何创建一个对象模型来匹配它。
<UI5SOLTGET>
<Form FrmName="U5_SolTar" FrmTit="Solicitud de VOUCHER" >
<FormItems FrmIte="1" FrmLab="Numero de Serie" FrmVal="" FrmData="SER" FrmType="T3" FrmRest="" FrmEna="true" />
<FormItems FrmIte="2" FrmLab="Numero de Voucher" FrmVal="" FrmData="VOU" FrmType="N9" FrmRest="" FrmEna="true" />
<FormItems FrmIte="3" FrmLab="Fecha Vencimiento" FrmVal="" FrmData="FECP" FrmType="F" FrmRest="!" FrmEna="true" />
<FormItems FrmIte="4" FrmLab="Es XNET" FrmVal="" FrmData="XNET" FrmType="B" FrmRest="" FrmEna="true" />
<FormItems FrmIte="5" FrmLab="Numero de Trajeta" FrmVal="" FrmData="TAR" FrmType="T20" FrmRest="" FrmEna="true" />
<FormItems FrmIte="6" FrmLab="Plan de la Tarjeta" FrmVal="" FrmData="PLAN" FrmType="N3" FrmRest="" FrmEna="true" />
<FormItems FrmIte="7" FrmLab="Numero de Cartera" FrmVal="" FrmData="CAR" FrmType="N3" FrmRest="" FrmEna="true" />
<FormItems FrmIte="8" FrmLab="Numero de Autorizacion" FrmVal="" FrmData="DT1" FrmType="T12" FrmRest="" FrmEna="true" />
<FormItems FrmIte="9" FrmLab="Numero de Lote" FrmVal="" FrmData="DT2" FrmType="T12" FrmRest="" FrmEna="true" />
<FormItems FrmIte="10" FrmLab="Numero de Ticket" FrmVal="" FrmData="DT3" FrmType="T12" FrmRest="" FrmEna="true" />
<FormItems FrmIte="11" FrmLab="VISA Itau [C]red/[D]eb." FrmVal="" FrmData="CRDB" FrmType="T1" FrmRest="C|D" FrmEna="true" />
</Form>
</UI5SOLTGET>
Java 型号
对于您的用例,您需要:
- 一个
FormItems
class。此 class 似乎已将其所有数据映射到 XML 属性,因此您将在每个映射属性上使用@XmlAttribute
。 - 它们有很多
FormItems
个元素,因此它们将被集合引用。父元素包含映射数据,因此您将无法利用@XmlElementWrapper
注释,并且需要一个具有List<FormItems>
属性 的Form
class。 - 您还需要一个 class 对应于用
@XmlRootElement
注释的根元素。
映射您的 Java 模型
获得 Java 模型后,您需要调整其元数据以确保它与您想要 read/write 的 XML 相匹配。最简单的方法是填充您的对象模型并对其进行编组,并记下它与您的目标不同的地方 XML。 JAXB 不需要任何注释,因此您可以立即开始执行此操作。
由于所有 XML 元素和属性都以大写字母开头,您会发现您需要利用 name
属性 对 @XmlRootElement
的所有使用, @XmlElement
,以及 @XmlAttribute
。