2016-10-25 4 views
0

Я читаю XML-файл.@XmlValue и @XmlElement Conflict в JaxB

<MSS id="9B8F6188-9636-11E0-8718-88F89CFF4B22"> 
    <STANDARD id="1EBE0C64-9892-11E0-8388-5F489DFF4B22"> 
     <TOPIC> 
      Reading 
      <TOPIC> Literature </TOPIC> 
      <TOPIC> Writing </TOPIC> 
     </TOPIC> 
    </STANDARD> 
</MSS> 

для выше XML я создал POJO как

@XmlRootElement(name="MSS") 
@XmlAccessorType(XmlAccessType.FIELD) 
public class MSS 
{ 
    private String id; 

    private STANDARD STANDARD; 

    public String getId() 
    { 
     return id; 
    } 

    public void setId (String id) 
    { 
     this.id = id; 
    } 

    public STANDARD getSTANDARD() 
    { 
     return STANDARD; 
    } 

    public void setSTANDARD (STANDARD STANDARD) 
    { 
     this.STANDARD = STANDARD; 
    } 

    @Override 
    public String toString() 
    { 
     return "ClassPojo [id = "+id+", STANDARD = "+STANDARD+"]"; 
    } 
} 

STANDARD.java

@XmlAccessorType(XmlAccessType.FIELD) 
    public class STANDARD 
    { 
     private String id; 

     @XmlElement(name="TOPIC") 
     private TOPIC TOPIC; 

     public String getId() 
     { 
      return id; 
     } 

     public void setId (String id) 
     { 
      this.id = id; 
     } 

     public TOPIC getTOPIC() 
     { 
      return TOPIC; 
     } 

     public void setTOPIC (TOPIC TOPIC) 
     { 
      this.TOPIC = TOPIC; 
     } 

     @Override 
     public String toString() 
     { 
      return "ClassPojo [id = "+id+", TOPIC = "+TOPIC+"]"; 
     } 
    } 

и TOPIC.java

@XmlAccessorType(XmlAccessType.NONE) 
public class TOPIC 
{ 
    @XmlValue 
    private String content; 

    @XmlElement(name="TOPIC") 
    private String TOPIC; 

    public String getContent() 
    { 
     return content; 
    } 

    public void setContent (String content) 
    { 
     this.content = content; 
    } 

    public String getTOPIC() 
    { 
     return TOPIC; 
    } 

    public void setTOPIC (String TOPIC) 
    { 
     this.TOPIC = TOPIC; 
    } 

    @Override 
    public String toString() 
    { 
     return "ClassPojo [content = "+content+", TOPIC = "+TOPIC+"]"; 
    } 
} 

когда я пытаюсь распаковать это я получил исключение, такое как

Если класс @XmlElement свойства, оно не может иметь @XmlValue свойству

У меня есть несколько разделов внутри тега темы, и я хочу тему содержания «Чтение» значения.

+0

тема не может быть строкой. это будет список – Mahi

+0

try @XmlMixed .. или попытаться создать сгенерированный класс с помощью xsd. – Mahi

ответ

0

Как предложено @mahi Вы можете добавить @XmlMixed к контенту со списком вместо темы String. Задача решена.