+ Antworten
Ergebnis 1 bis 2 von 2

Thema: JAXB List marshell

  1. #1
    User int Themenstarter

    Registriert seit
    21.07.2015
    Fachbeiträge
    50
    Genannt
    1 Post(s)
    Ich habe eine xml, die so aussieht:
    XML Code:
    1.  
    2. <ruleset id="image-sorter">
    3.  
    4.     <filters>
    5.         <filter id="ending">
    6.             <parameter id="ending" value="mp3"/>
    7.         </filter>
    8.     </filters>
    9.    
    10.     <actions>
    11.         <action id="move">
    12.             <parameter id="folder" value="" resolver-id="folder-resolver"/>
    13.         </action>
    14.     </actions>
    15.    
    16. </ruleset>

    Ich würde gerne mit JAXB den Kram mit Hilfe eines Models darstellen. Mein Problem nun: Ich hab mir eine Klasse "Ruleset" gemacht, die als Attribut zwei Listen hat, einmal "actions" und einmal "filters". Der Datentyp ist jeweils List<T>.
    Wenn ich mit JAXB eine Liste "marshelle", dann bekomme ich ja immer die Struktur
    XML Code:
    1.  
    2. <listroot>
    3.     <listelem></listelem>
    4.     ....
    5. <listroot>
    So sieht der Code dann ungefähr aus:
    Java Code:
    1.  
    2. public class XmlFilter {
    3.  
    4.     @XmlAttribute(required = true)
    5.     private String id;
    6.  
    7.     @XmlElement(name = "parameter")
    8.     private List<XmlParameter> paremeters;
    9.  
    10.     public String getId() {
    11.         return id;
    12.     }
    13. }
    14.  
    15. public class XmlParameter {
    16.    
    17.     @XmlAttribute(required = true)
    18.     private String id;
    19.    
    20.     private String value;
    21.    
    22.     @XmlAttribute(name = "resolver-id")
    23.     private String resolverId;
    24.  
    25.     public String getResolverId() {
    26.         return resolverId;
    27.     }
    28.  
    29.     public String getId() {
    30.         return id;
    31.     }
    32.  
    33.     public String getValue() {
    34.         return value;
    35.     }
    36. }
    37.  
    38. public class XmlRuleSet {
    39.    
    40.     @XmlAttribute(required = true)
    41.     private String id;
    42.    
    43.     @XmlElementWrapper(name = "filters")
    44.     private List<XmlFilter> filters;
    45.    
    46.     @XmlElementWrapper(name = "actions")
    47.     private List<XmlAction> actions;
    48.  
    49.     public String getId() {
    50.         return id;
    51.     }
    52.  
    53.     public List<XmlFilter> getFilters() {
    54.         return filters;
    55.     }
    56. }
    57.  
    58. public class XmlAction {
    59.    
    60.     @XmlAttribute(required = true)
    61.     private String id;
    62.    
    63.     @XmlElement(name = "parameter")
    64.     private List<XmlParameter> parameters;
    65. }
    Das Problem nun: Wenn ich versuche, meine xml zu "unmarshellen" geht das nicht ganz. Ich denke das liegt daran, dass JAXB die Elemente der Liste immer zwischen einen "Root-Tag" schreibt, im Normalfall den Namen der Liste. In meinem Beispiel würde ich gerne diesen Tag entfernen oder erst gar nicht generieren lassen. Gibt es da irgendeinen Weg?

  2. #2
    User Megabyte Avatar von Timothy_Truckle
    Registriert seit
    01.08.2013
    Ort
    Wasserkuppe
    Fachbeiträge
    1.329
    Genannt
    85 Post(s)
    Blog-Einträge
    5
    JA,
    Du mussst den Names des Tags verdenden, das wiederholt wird.

    So sollte es gehen:
    Java Code:
    1.     @XmlElementWrapper(name = "filter")
    2.     private List<XmlFilter> filters;
    3.    
    4.     @XmlElementWrapper(name = "action")
    5.     private List<XmlAction> actions;

    Ich mache es ja grundsätzlich umgekehrt, d.h.: ich erstelle eine XSD und lasse dann jaxb die notwendigen Klassen generieren.

    bye
    TT

+ Antworten Thema als "gelöst" markieren

Direkt antworten Direkt antworten

Schreibe folgende Zahl als Zahlwort! 85

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. JAXB: XSD Versionieren?
    Von tuxedo im Forum XML-Programmierung
    Antworten: 2
    Letzter Beitrag: 13.01.2016, 10:34
  2. JAXB und Bind - in GUI
    Von Alexx im Forum XML-Programmierung
    Antworten: 3
    Letzter Beitrag: 02.06.2014, 10:39
  3. JAXB Speichern von Objekten als XML
    Von Kokscola im Forum XML-Programmierung
    Antworten: 1
    Letzter Beitrag: 27.09.2013, 14:06
  4. JAXB
    Von JSeann im Forum Java-Grundlagen
    Antworten: 3
    Letzter Beitrag: 10.02.2011, 08:00
  5. JAXB mit Java 1.5
    Von JSeann im Forum Java Enterprise Edition (Java EE)
    Antworten: 1
    Letzter Beitrag: 23.09.2010, 15:43

Stichworte

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •