我正在调整XStream输出,我得到以下内容:
<entry>
<string>ahh</string>
<java-class>java.lang.Integer</java-class>
</entry>
所以我尝试为java.lang.Integer.class创建一个别名......不起作用。我为许多其他类创建了别名,它工作得很好。我也尝试别名int.class
;没有运气。
诀窍是什么?
谢谢!
修改
我意识到这个问题不够明确。我感兴趣的是不来为元素名称添加别名(XStream已经很好地完成了它)。我想为元素中包含的数据添加别名。没有什么比如一个例子了:
这是我做的一个测试:
import java.util.ArrayList;
import com.thoughtworks.xstream.XStream;
public class Main {
public static void main(String[] args) {
ArrayList<Class<?>> classes = new ArrayList<Class<?>>();
classes.add(Integer.class);
classes.add(Long.class);
classes.add(Double.class);
classes.add(Float.class);
ArrayList<Number> numbers = new ArrayList<Number>();
numbers.add(new Integer(3));
numbers.add(new Long(3));
numbers.add(new Double(3));
numbers.add(new Float(3));
XStream xml = new XStream();
xml.alias("inty", Integer.class);
xml.aliasType("inty", Integer.class);
xml.aliasPackage("jl", "java.lang");
System.out.println(xml.toXML(classes));
System.out.println(xml.toXML(numbers));
}
}
哪个输出:
<list>
<java-class>java.lang.Integer</java-class>
<java-class>java.lang.Long</java-class>
<java-class>java.lang.Double</java-class>
<java-class>java.lang.Float</java-class>
</list>
<list>
<int>3</int>
<long>3</long>
<double>3.0</double>
<float>3.0</float>
</list>
正如您所看到的,元素名称具有良好的别名(第二个列表),但如果我将其用作数据,我找不到缩短类名的方法。我尝试了大多数相关的XStream.alias *方法。我想要的是(第一个列表):
<list>
<java-class>int</java-class>
<java-class>long</java-class>
<java-class>double</java-class>
<java-class>float</java-class>
</list>
老实说,现在,我怀疑这是不可能的,但是我至少可以分享这个想法。
答案 0 :(得分:2)
显然是Integer.class
xstream.alias("totalResults", Integer.class);
xstream.alias("startIndex", Integer.class);
xstream.alias("itemsPerPage", Integer.class);
xstream.alias("age", Integer.class);