Я новичок в xstream и столкнулся с одной ситуацией, как показано ниже.
<root>
<category>
<car></car>
<cloth></cloth>
</category>
</root>
Это мой демонстрационный XML.Здесь категория может иметь либо car
, либо cloth
в качестве подузла, но не оба одновременно.Мне нужна помощь о том, как определить класс POJO для этой ситуации.Я пробовал этот способ.
@XStreamAlias("root")
public class Root {
@XStreamAlias("category")
private Category category;
public Category getCategory() {
return category;
}
public void setCategory(Category category) {
this.category = category;
}
}
Здесь Category
- это интерфейс, который реализуется классами Car
и Cloth
.
Реализация для класса Cloth
приведена ниже.
@XStreamAlias("cloth")
public class Cloth implements Category {
@XStreamAlias("name")
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Root r = new Root();
Cloth c = new Cloth();
c.setName("xyz");
r.setCategory(c);
String xmll = XStreamUtil.toXml(r);
System.out.println(xmll);
Что привело к следующему выводу.
<root>
<category class="cloth">
<name>xyz</name>
</category>
</root>
желаемый вывод такой, как показано ниже
<root>
<category>
<cloth>
<name>xyz</name>
</cloth>
</category>
</root>