将List <string>转换为xml-schema类型(定义为字符串列表)</string>

时间:2014-06-08 16:10:30

标签: java xml arraylist xsd type-conversion

我有一个名为StringArrayStringStringArray的类,它们是从XML-Schema文件生成的。定义如下:

 * &lt;complexType name="stringArray">
 *   &lt;complexContent>
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       &lt;sequence>
 *         &lt;element name="item" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
 *       &lt;/sequence>
 *     &lt;/restriction>
 *   &lt;/complexContent>
 * &lt;/complexType>

 * &lt;complexType name="stringArrayArray">
 *   &lt;complexContent>
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       &lt;sequence>
 *         &lt;element name="item" type="{http://jaxb.dev.java.net/array}stringArray" maxOccurs="unbounded" minOccurs="0"/>
 *       &lt;/sequence>
 *     &lt;/restriction>
 *   &lt;/complexContent>
 * &lt;/complexType>

课程按以下方式定义(课程由练习课程的教师提供):

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "stringArray", propOrder = {
    "item"
})
public class StringArray {

    @XmlElement(nillable = true)
    protected List<String> item;

    public List<String> getItem() {
        if (item == null) {
            item = new ArrayList<String>();
        }
        return this.item;
    }

}

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "stringArrayArray", propOrder = {
    "item"
})
public class StringArrayArray {

    @XmlElement(nillable = true)
    protected List<StringArray> item;

    public List<StringArray> getItem() {
        if (item == null) {
            item = new ArrayList<StringArray>();
        }
        return this.item;
    }
}

现在我需要将List<String>类型的对象添加到StringStringArray对象。情况如下:

List<List<String>> listOfLists = new ArrayList<List<String>>();
StringArrayArray respond = new StringArrayArray();

ListIterator<List<String>> listIterator = listOfLists.listIterator();
while(listIterator.hasNext()) {
    int index = listIterator.nextIndex();
    List<String> key = listIterator.next();
    respond.getItem().add((StringArray) key); // fails with runtime cast error
}

add对象的StringStringArray方法需要StringArray。我还需要addAll方法和预期参数Collection<? extends StringArray> arg。 我该如何解决这个问题?

编辑: 使用转换功能它工作正常,但我不确定这是否是一个好的&#34;溶液

private StringArray convert(List<String> list) {
    StringArray array = new StringArray();
    for (String string : list) {
        array.getItem().add(string);
    }
    return array;
}

提前致谢,

Meiner。

0 个答案:

没有答案