2017-11-09 31 views
1

を持つXMLタグや属性、私は、次のXMLを取得したい:ジャクソン同じ名前

<User id="two"> 
    <id>one</id> 
</User> 

そして、私はこのためにジャクソンXMLマッパーを使用しよう:

@JacksonXmlRootElement 
public class User { 
    private String id; 

    private String attributeId; 

    public User(final String id, final String attributeId) { 
     this.id = id; 
     this.attributeId = attributeId; 
    } 

    @JacksonXmlProperty(localName = "id") 
    public String getId() { 
     return id; 
    } 

    @JacksonXmlProperty(localName = "id", isAttribute = true) 
    public String getAttributeId() { 
     return attributeId; 
    } 

    public static void main(String[] args) throws IOException { 
     final XmlMapper xmlMapper = new XmlMapper(); 
     final File file = new File("user.xml"); 
     final User user = new User("one", "two"); 

     xmlMapper.writeValue(file, user); 
    } 
} 

しかし、私が得るすべてがありますこの例外

java.lang.IllegalArgumentException: Conflicting getter definitions for property "id": com.sbconverter.parser.slovoed.User#getId(0 params) vs com.sbconverter.parser.slovoed.User#getAttributeId(0 params) 

1つのオブジェクトに属性とタグの同じ名前を付けることはできますか?

答えて

0

これは既知の問題ですので、この場合は余分なクラスを行う必要があります。

localName(localName = "id")のidの前に空白を追加すると、このトリックを行うことができますが、新しいBeanを作成することをお勧めします。