java - 如何使用 XStream 为数据类型别名?

标签 java xstream stax

我想将对象转换为 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/

相关文章:

java - 随机数学问题生成器不遵循 while 循环

java - Xstream 和枚举解码 : No enum constant

java - 使用 sax、stax 或 DOM 将 XML 转换为 java 中的数据结构

java - DOM,SAX和StAX XML解析器之间有什么区别?

java - 亚马逊 AWS S3 桶递归提取

java - 使用 Inno Setup native 打包 fx-jar 时出错 [fx :deploy] java. io.IOException

java - Xstream 附加到现有的 XML 文件

java - 使用 XStream 从这种形式的 XML 中(反)序列化对象(Hashmap)

java - XML结构的复杂度对解析速度有影响吗?

java - 降低java方法的圈复杂度