如何使用 XStream 为数据类型起别名?
How to alias the data type using XStream?
我想将对象转换为 xml,它需要为 String 数据类型提供别名。例如:
public class ArrayTest
{
private int id=4;
public String area[];
public void setArea(String ar[])
{
area = ar;
}
}
对象到 xml 转换 class 就像:
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 的新手,请帮助我
您可以使用:
stream.addImplicitArray(ArrayTest.class, "area", "code");
我认为这可行:
先为area
添加一个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>
我想将对象转换为 xml,它需要为 String 数据类型提供别名。例如:
public class ArrayTest
{
private int id=4;
public String area[];
public void setArea(String ar[])
{
area = ar;
}
}
对象到 xml 转换 class 就像:
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 的新手,请帮助我
您可以使用:
stream.addImplicitArray(ArrayTest.class, "area", "code");
我认为这可行:
先为area
添加一个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>