使用JaxB解组包含List <string>字段</string>的对象

时间:2014-07-25 19:09:26

标签: java jaxb marshalling unmarshalling

我有一个包含List字段的Java类。

public class Machine{
    public int ID;

    public String Name;

    public String Status;

    public String Environment;

    public String Cluster;

    public List<String> SupportedLocales;
}

下面是我想要解组的XML类的实例。

<?xml version="1.0" encoding="utf-8"?>
<Machine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <ID>27</ID>
    <Name>QA14ADMINOPM201</Name>
    <Status>Decom</Status>
    <Environment>QA14</Environment>
    <Cluster>ADMINOPM</Cluster>
    <SupportedLocales>
        <SupportedLocale>NA</SupportedLocale>
        <SupportedLocale>Global</SupportedLocale>
    </SupportedLocales>
</Machine>

当我解组Xml时,生成的对象有一个空的SupportedLocales列表,没有元素。有什么理由可能会发生这种情况或建议修复?所有其他字段正在正确解组。

1 个答案:

答案 0 :(得分:4)

使用XmlElementWrapper注释注释您的字段:

@XmlElementWrapper(name = "SupportedLocales")
@XmlElement(name = "SupportedLocale")
public List<String> SupportedLocales;

还尝试遵循使用以小写字母开头的变量(supportedLocales而不是SupportedLocales)的约定。这需要映射每个字段的XML元素名称,如下所示:

@XmlElement(name="ID")
public int id;

@XmlElement(name="Name")
public String name;

@XmlElement(name="Status")
public String status;

@XmlElement(name="Environment")
public String environment;

@XmlElement(name="Cluster")
public String cluster;

@XmlElementWrapper(name = "SupportedLocales")
@XmlElement(name = "SupportedLocale")
public List<String> supportedLocales;