2012-10-01 58 views
0

我已经开始使用xstream库将Java代码转换为XML。我的模型的Java类简单,如下:使用xstream将Java转换为XML

class Person { 
    String firstname; 
    String lastname;  
    String age; 
    public Person(String first, String last,String age) { 
     firstname = first; 
     lastname = last; 
     this.age = age; 
    } 
} 

因此,使用简单的XStream API我正在toXML方法如下输出:

<Person> 
    <firstname>David</firstname> 
    <lastname>Goswami</lastname> 
    <age>34</age> 
</Person> 

不过,我想调整的输出和将字符串年龄作为字段名的属性。从本质上讲,我期待下面的XML输出:

<Person> 
    <firstname age="34">David</firstname> 
    <lastname>Goswami</lastname> 
</Person> 

如何做到这一点任何帮助将得到高度赞赏。

+1

JAXB更适合这个恕我直言。另外,我认为你不会把年龄当作名字的属性而不是Person。 – artbristol

+0

我建议你看看这里的文档,它显示了一个很好的例子,你试图实现: 有注释http://xstream.codehaus.org/annotations-tutorial.html#Attributes或没有http:/ /xstream.codehaus.org/alias-tutorial.html#attributes –

+0

您不是'从Java代码转换为XML'。您正在将Java *对象*转换为XML。 – EJP

回答

0

可以使用XStream.useAttributeFor()声明一个属性被序列作为属性:

xstream.useAttributeFor(Person.class, "age"); 
+0

如果我们有String,它会为所有字符串添加属性吗? –

0
@XStreamAsAttribute 
String age; 
+1

这会将年龄属性添加到Person元素。 – Buhb

+0

感谢您的意见。但我已经尝试过这些选项。他们会作出这样的输出 - – user496934

+0

<人年龄=“34”> 大卫 哥斯瓦米 不过,我想年龄作为名字的属性。像这样 – user496934