我想将对象转换为 xml,其中需要提供字符串数据类型的别名。例如:
public class ArrayTest
{
private int id=4;
public String area[];
public void setArea(String ar[])
{
area = ar;
}
}
对象到 xml 的转换类如下:
public class Test
{
public static void main(String args[])
{
String area[] = {"ABC","XYZ","PRQ"};
ArrayTest at = new ArrayTest();
at.setArea(area);
Xstream stream = new XStream(new staxDriver());
stream.alias("response",ArrayTest.class);
System.out.println(stream.toXML(at));
}
}
我得到的输出为:
<?xml version="1.0" ?>
<response>
<id>4</id>
<area>
<string>ABC</string>
<string>XYZ</string>
<string>PRQ</string>
</area>
</response>
但我想要输出为:
<?xml version="1.0" ?>
<response>
<id>4</id>
<area>
<code>ABC</code>
<code>XYZ</code>
<code>PRQ</code>
</area>
</response>
我是 XStream 新手,请帮助我
最佳答案
我认为这可行:
首先为区域添加一个getter
public class ArrayTest {
private int id = 4;
private String[] area;
public void setArea(String ar[]) {
area = ar;
}
public String[] getArea() {
return area;
}
}
然后添加一个NamedArrayConverter
转换器:
public static void main(String args[]) {
String area[] = { "ABC", "XYZ", "PRQ" };
ArrayTest at = new ArrayTest();
at.setArea(area);
XStream stream = new XStream();
stream.alias("response",ArrayTest.class);
stream.registerConverter(new NamedArrayConverter(at.getArea().getClass(), null, "code"));
System.out.println(stream.toXML(at));
}
这是输出:
<response>
<id>4</id>
<area>
<code>ABC</code>
<code>XYZ</code>
<code>PRQ</code>
</area>
</response>
关于java - 如何使用 XStream 为数据类型别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28190986/