2017-03-02 53 views
1

首先,如果问题不明确,我很抱歉。我正在尝试使用XStream从其对象中创建一个XML。如何使用XStream将对象的数据部分转换为XML?

以下是XML的我想实现形式:

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

我无法设计类。

以下是我如何到目前为止实现了它:

@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 
} 

现在,当我做到以下几点:

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)); 

我得到的XML一个额外<content>标签。我不想额外的<content>标签,我希望它是<Tag>的内容。我如何使用XStream来做到这一点?

回答

0

只需添加@XStreamConverter(value=ToAttributedValueConverter.class, strings={"content"})转换器。

@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)); 
    } 
}