Ограничить появление промежуточного элемента в XML, но не его свойства

Я работаю над анализом XML и пытаюсь достичь заранее определенного формата XML. Я использую синтаксический анализатор JAXB и создал несколько POJO для достижения той же цели. Я подготовил POJO, как показано ниже:

  • User.java

``

public class User
{
    @XmlVariableNode("fieldName")
    public List<Field> field;

    // getter, setter
}
  • Field.java

``

public class Field 
{
    @XmlAttribute
    public int id;

    @XmlAttribute
    public String mode;

    @XmlTransient
    public String fieldName;

    public Child1 child1;

    public Child2 child2;

    public Field(){}

    public Field(int id, String fieldName, String value)
    {
        this.id = id;
        this.fieldName = fieldName;
        this.child1 = new Child1(value);
    }

    public Field(int id, String mode, String fieldName, String userName, String userId)
    {
        this.id = id;
        this.mode = mode;
        this.fieldName = fieldName;
        this.child2 = new Child2(userName, userId);
    }

    // getter, setter

    public static class Child1
    {
        @XmlValue
        String value;

        Child1(){}

        Child1(String value)
        {
            this.value = value;
        }

        //getter,setter 
    }

    public static class Child2
    {
         @XmlElement(name="USERNAME")
         String userName;

         @XmlElement(name="USERID")
         String userId;

         Child2(){}

         Child2(String userName, String userId)
         {
            this.userId = userId;
            this.userName = userName;
         }

        // getter, setter
    }
}

и JAXB дает мне XML как:

<USER>
   <First_Name id="21">
      <child1>Mahendra</child1>
   </First_Name>
   <Middle_Name id="22">
      <child1>Singh</child1>
   </Middle_Name>
   <Last_Name id="23">
      <child1>Dhoni</child1>
   </Last_Name>
   <Manager id="21" mode="2">
      <child2>
         <USERNAME>rahulsharma</USERNAME>
         <USERID>rahul_23</USERID>
      </child2>
   </Manager>
   <HRManager id="22" mode="3">
      <child2>
         <USERNAME>amanverma</USERNAME>
         <USERID>aman_45</USERID>
      </child2>
   </HRManager>
</USER>

но я не хочу, чтобы теги child1 и child2 появлялись в XML, а хочу, чтобы приведенный выше XML был следующим:

<USER>
   <First_Name id="21">Mahendra</First_Name>   
   <Middle_Name id="22">Singh</Middle_Name>
   <Last_Name id="23">Dhoni</Last_Name>
   <Manager id="21" mode="2">
       <USERNAME>rahulsharma</USERNAME>
       <USERID>rahul_23</USERID>
   </Manager>
   <HRManager id="22" mode="3">
      <USERNAME>amanverma</USERNAME>
      <USERID>aman_45</USERID>
   </HRManager>
</USER>

0 ответов

Другие вопросы по тегам