2017-03-02 1 views
1

Zunächst tut mir leid, wenn die Frage nicht klar ist. Ich versuche, ein XML aus einem Objekt mit seinem Inhalt in XStream zu erstellen.Wie konvertiert man Datenteil eines Objekts mit XStream in XML?

Es folgt die Form von XML zu erreichen Ich versuche:

<Tag attr1 = "some_value" attr2 = "some_value"> CONTENT </Tag> 

Ich habe Probleme mit der Klasse zu entwerfen.

Es folgt, wie ich es umgesetzt haben bisher:

@XStreamAlias("Tag") 
public class Tag { 

    @XStreamAsAttribute 
    private String attr1; 

    @XStreamAsAttribute 
    private String attr2; 

    private String content; 

    public Tag(String content) { 

    this.content = content; 
    } 

    // Getters for all three 

    // Setters for all three 
} 

Nun, wenn ich folgendes tun:

Tag tag = new Tag("Content"); 
tag.setAttr1("some_value"); 
tag.setAttr2("some_value"); 
XStream xStream = new XStream(); 
xStream.processAnnoations(Tag.class); 
System.out.println(xStream.toXML(tag)); 

Ich erhalte die XML mit einem zusätzlichen <content> Tag. Ich will nicht das extra <content> Tag, ich will es der Inhalt von <Tag> sein. Wie mache ich das mit XStream?

Antwort

0

Fügen Sie einfach @XStreamConverter(value=ToAttributedValueConverter.class, strings={"content"}) Konverter hinzu.

@XStreamConverter(value=ToAttributedValueConverter.class, strings={"content"}) 
@XStreamAlias("Tag") 
public class Tag { 

    @XStreamAsAttribute 
    String attr1; 

    @XStreamAsAttribute 
    String attr2; 

    String content; 

    public Tag(String content) { 
    this.content = content; 
    } 


    public static void main(String[] args) { 
     Tag tag = new Tag("Content"); 
     tag.attr1 = "some_value"; 
     tag.attr2 = "some_value"; 
     XStream xStream = new XStream(); 
     xStream.processAnnotations(Tag.class); 
     System.out.println(xStream.toXML(tag)); 
    } 
} 
Verwandte Themen