2016-06-10 17 views
0

Gibt es eine Möglichkeit, demselben Typ verschiedene Namen zuzuweisen, wenn @XmlElements verwendet wird? Ich begann mit nur @XmlElement. Habe gelesen und gefunden @XmlElementWrapper und die @XmlElements aber immer noch nicht in der Lage, meine gewünschte Ausgabe zu bekommen. Mir ist klar, dass ich einfach verschiedene Datentypen für die 2 erstellen könnte, aber es wäre schön, wenn ich das nur mit Anmerkungen machen könnte.Mehrere Elemente mit dem gleichen Typ aber anderen Namen?

Aktuelle Iteration:

@XmlRootElement(name = "Root") 
public class XmlTest { 

    @XmlElementWrapper(name="ContactInformation") 
    @XmlElements({ 
      @XmlElement(name="Name"), 
      @XmlElement(name="LogicalOwner") 
    }) 
    public List<String> contactInformation; 
    ... 
     contactInformation = new ArrayList<>(); 
     contactInformation.add("should be inside name"); 
     contactInformation.add("should be insde of owner"); 
    ... 

Stromausgang:

<Root> 
    <ContactInformation> 
     <LogicalOwner>should be inside name</LogicalOwner> 
     <LogicalOwner>should be insde of owner</LogicalOwner> 
    </ContactInformation> 
</Root> 

gewünschte Ausgabe:

<Root> 
    <ContactInformation> 
     <Name>should be inside name</Name> 
     <LogicalOwner>should be insde of owner</LogicalOwner> 
    </ContactInformation> 
</Root> 

Antwort

0

Sie co Versuchen Sie, eine Klasse zu erstellen, die die Felder in ihnen speichert und dann diese Klasse serialisiert.

@XmlRootElemnt(name="root") 
Class ContactInformation{ 

    private String name; 

    @XmlElement(name="Name") 
    public String getName() { 
     return this.name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 
} 

Ich bin es gewohnt, mit Gson.toJson(), also ich bin nicht viel Hilfe bei der Serialisierung zu XML; Hoffentlich weist dich das aber in die richtige Richtung.

+0

Yeah ... Ich hatte gehofft zu vermeiden, eine andere Klasse zu erstellen. Aber das würde funktionieren. Das würde mein Plan B sein, wenn ich keinen Weg finden würde, alles in einer Klasse zu machen. – gonzo

Verwandte Themen