2012-04-02 4 views
1

に名前空間属性を追加します。XML用のモジュラー方法

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

がどのように私はFooのクラスを作成することができますか?具体的には、私は 'ext'属性を何らかの形で分けることができるようにしたいのですが、それはFooではなく、別のクラスであり、型保証された方法(XmlAnyAttributeではない)です。

何が最適に望むことは次のとおりです。

class Foo { 
    Ext ext; 
} 

class Ext { 
    String bar; 
} 

答えて

0

参照されたオブジェクトが@XmlValueを有する唯一のマップされたフィールド/プロパティを持っている場合は、@XmlAttributeとPOJOのフィールド/プロパティをマッピングすることができます。詳細情報

フー

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

内線

class Ext { 
    @XmlValue 
    String bar; 
} 


UPDATE

注:私はEclipseLink JAXB (MOXy)リードとJAXB 2 (JSR-222)専門家グループのメンバーです。

複数の属性をマップする場合はどうすればよいですか?

あなたはこのユースケースのためのMOXYで@XmlPath拡張子を活用することができます:@XmlPath(".")を使用して

フー

はあなたにXML文書内の同じレベルで表されるターゲットオブジェクトを望んでいることを示しソースオブジェクト。

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

詳細情報内線

class Ext { 
    @XmlAttribute 
    String foo; 

    @XmlAttribute 
    String bar; 
} 

+1

複数の属性をマップする場合はどうなりますか? – IttayD

+0

Extが別の名前空間に属するように指定するにはどうすればよいですか? – IttayD

+0

@IttayD - 以下が役立ちます:http://blog.bdoughan.com/2010/08/jaxb-namespaces.html –

関連する問題