簡體   English   中英

如何使用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轉換類如下:

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添加吸氣劑

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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM