2012-04-02 1 views
1

für das xml:hinzufügen Namespaced Attribut in modular

<foo xmlns="http://ns.com" 
    xmlns:ext="http://ext.com" 
    attr="xxx" 
    ext:bar="yyy"> 
</foo> 

Wie kann ich eine Foo-Klasse erstellen? Genauer gesagt möchte ich das Attribut 'ext' irgendwie trennen können, so dass es nicht direkt in Foo, sondern in einer anderen Klasse und in einer typsicheren Weise (also nicht XmlAnyAttribute) ist.

Was ich wünsche optimal ist:

class Foo { 
    Ext ext; 
} 

class Ext { 
    String bar; 
} 

Antwort

0

Sie können eine POJO Feld/Eigenschaft mit @XmlAttribute zuordnen, wenn das referenzierte Objekt nur eine abgebildet Feld/Eigenschaft mit @XmlValue hat.

Foo

class Foo { 
    @XmlAttribute(namespace="http://www.ext.com") 
    Ext ext 
} 

Ext

class Ext { 
    @XmlValue 
    String bar; 
} 

Weitere Informationen


UPDATE

Hinweis: Ich bin das EclipseLink JAXB (MOXy) Blei und ein Mitglied der JAXB 2 (JSR-222) Expertengruppe.

Was ist, wenn ich mehrere Attribute zuordnen möchte?

Sie nutzen die @XmlPath Erweiterung in moxy für diesen Anwendungsfall:

Foo

@XmlPath(".") Verwendung zeigt an, dass Sie das Zielobjekt auf der gleichen Ebene im XML-Dokument als das dargestellt wollen Quellobjekt.

class Foo { 
    @XmlPath(".") 
    Ext ext 
} 

Ext

class Ext { 
    @XmlAttribute 
    String foo; 

    @XmlAttribute 
    String bar; 
} 

Weitere Informationen

+1

Was ist, wenn ich mehrere Attribute zuordnen möchte? – IttayD

+0

Wie gebe ich an, dass Ext in einem anderen Namensraum gehört? – IttayD

+0

@IttayD - Folgendes sollte helfen: http://blog.bdoughan.com/2010/08/jaxb-namespaces.html –