2013-02-05 35 views
8

には、xml属性としてjackson経由でjava var(例:int)をシリアル化する方法がありますか? これを実現するために、特定のjacksonまたはjson注釈(@XmlAttribute @ javax.xml.bind.annotation.XmlAttribute)が見つかりません。jacksonでxml属性としてjavaオブジェクトをシリアル化する方法は?

<point x="100" y="100" z="100"/> 

を私が得たすべては、次のとおりです:

public class Point { 

    private int x, y, z; 

    public Point(final int x, final int y, final int z) { 
     this.x = x; 
     this.y = y; 
     this.z = z; 
    } 

    @javax.xml.bind.annotation.XmlAttribute 
    public int getX() { 
     return x; 
    } 
    ... 
} 

は、私が何をしたいです

<point> 
    <x>100</x> 
    <y>100</y> 
    <z>100</z> 
</point> 

属性の代わりの要素を取得する方法はありますか? 助けてくれてありがとう!

+0

int型に問題はありません。これまで何を試みたのですか、私はちょうど属性の代わりにxml要素を持っています。 – Divine

答えて

13

私は解決策を見つけました。

行方不明TAGはとても

@JacksonXmlProperty(isAttribute =真)

だけ変化であったAnnotaionIntrospectorを登録するにはあなたはジャクソン・データフォーマット-XMLを使用する場合

File file = new File("PointTest.xml"); 
XmlMapper xmlMapper = new XmlMapper(); 
xmlMapper.writeValue(file, new Point(100, 100, 100)); 

必要はありませんでしたgetterは:

@JacksonXmlProperty(isAttribute=true) 
public int getX() { 
    return x; 
} 

です。

https://github.com/FasterXML/jackson-dataformat-xml

@JacksonXmlProperty プロパティのXML名前空間とローカル名を指定することができます;:ちょうどにはどのようにこれを辿りますプロパティがXMLの 要素または属性として記述されるかどうかを指定します。

1

JaxbAnnotationIntrospectorに登録しましたか?

ObjectMapper mapper = new ObjectMapper(); 
AnnotationIntrospector introspector = new JaxbAnnotationIntrospector(); 
// make deserializer use JAXB annotations (only) 
mapper.getDeserializationConfig().setAnnotationIntrospector(introspector); 
// make serializer use JAXB annotations (only) 
mapper.getSerializationConfig().setAnnotationIntrospector(introspector); 
+0

コードは廃止されているようですが、試してみます。 – Divine

関連する問題