Java 我可以将单个xml属性解组为多元素数组吗?
给定以下xml代码:Java 我可以将单个xml属性解组为多元素数组吗?,java,arrays,xml,jaxb,Java,Arrays,Xml,Jaxb,给定以下xml代码: <root> <vector>{1, 2, 3, 4, 5}</vector> </root> 在我尝试这样做的过程中,我编写了一些代码,但它无法将正确地拆分为一个数组,其中每个数字都是一个单独的元素: @XmlType(propOrder = {"vector"}) @XmlRootElement(name = "root") public class Data { // class data private
<root>
<vector>{1, 2, 3, 4, 5}</vector>
</root>
在我尝试这样做的过程中,我编写了一些代码,但它无法将
正确地拆分为一个数组,其中每个数字都是一个单独的元素:
@XmlType(propOrder = {"vector"})
@XmlRootElement(name = "root")
public class Data
{
// class data
private int[] vector;
@XmlElement(name = "vector")
public void setVector(int[] vector)
{
this.vector = vector;
}
public int[] getVector()
{
return vector;
}
}
您需要一个XmlAdapter,如下所示:
public class VectorAdapter extends XmlAdapter<String, int[]> {
@Override
public int[] unmarshal(final String v) throws Exception {
final String[] strs = v.substring(1, v.length() - 1).split(",");
final int[] vector = new int[strs.length];
for (int i = 0; i < strs.length; i++) {
vector[i] = Integer.parseInt(strs[i].trim());
}
return vector;
}
@Override
public String marshal(final int[] v) throws Exception {
return null;
}
}
谢谢,这正是我想要的:)
public class VectorAdapter extends XmlAdapter<String, int[]> {
@Override
public int[] unmarshal(final String v) throws Exception {
final String[] strs = v.substring(1, v.length() - 1).split(",");
final int[] vector = new int[strs.length];
for (int i = 0; i < strs.length; i++) {
vector[i] = Integer.parseInt(strs[i].trim());
}
return vector;
}
@Override
public String marshal(final int[] v) throws Exception {
return null;
}
}
@XmlJavaTypeAdapter(VectorAdapter.class)
@XmlElement(name = "vector")
public void setVector(final int[] vector) {
this.vector = vector;
}