如何构建 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 型号

对于您的用例,您需要:

  1. 一个FormItemsclass。此 class 似乎已将其所有数据映射到 XML 属性,因此您将在每个映射属性上使用 @XmlAttribute
  2. 它们有很多 FormItems 个元素,因此它们将被集合引用。父元素包含映射数据,因此您将无法利用 @XmlElementWrapper 注释,并且需要一个具有 List<FormItems> 属性 的 Form class。
  3. 您还需要一个 class 对应于用 @XmlRootElement 注释的根元素。

映射您的 Java 模型

获得 Java 模型后,您需要调整其元数据以确保它与您想要 read/write 的 XML 相匹配。最简单的方法是填充您的对象模型并对其进行编组,并记下它与您的目标不同的地方 XML。 JAXB 不需要任何注释,因此您可以立即开始执行此操作。

由于所有 XML 元素和属性都以大写字母开头,您会发现您需要利用 name 属性 对 @XmlRootElement 的所有使用, @XmlElement,以及 @XmlAttribute