Я не могу понять, что я делаю неправильно. Мне нужно распаковать xml-файл, который выглядит следующим образом:
<ApplicationMetadata xmlns="http://www.sas.com/xml/schema/namespace/ApplicationMetadata-9.4">
<Role Name="name1" Desc="desc1 " DisplayName="disp1 ">
<Members/>
<ContributingRoles/>
<Capabilities>
<Capability CapabilityId="1"/>
<Capability CapabilityId="2"/>
<Capability CapabilityId="3"/>
</Capabilities>
</Role>
<Role Name="name2" Desc="desc2" DisplayName="disp2">
<Members>
<UserGroup Name="userGoup"/>
</Members>
<ContributingRoles/>
<Capabilities>
<Capability CapabilityId="1"/>
<Capability CapabilityId="2"/>
</Capabilities>
</Role>
</ApplicationMetadata>
У меня есть следующие классы:
@XmlRootElement(name = "ApplicationMetadata", namespace = "http://www.sas.com/xml/schema/namespace/ApplicationMetadata-9.4")
@XmlAccessorType(XmlAccessType.FIELD)
public class ApplicationMetaData {
@XmlElement(name = "Role")
private List<Role> roles;
getters and setters
}
@XmlRootElement(name = "Role")
@XmlAccessorType(XmlAccessType.FIELD)
public class Role {
@XmlAttribute(name = "Name")
private String name;
@XmlAttribute(name = "Desc")
private String desc;
@XmlAttribute(name = "DisplayName")
private String displayName;
@XmlElementWrapper(name = "ContributingRoles")
@XmlElement(name = "UserGroup")
private List<UserGroup> contributionRoles;
@XmlElementWrapper(name = "Members")
@XmlElement(name = "UserGroup")
private List<UserGroup> members;
@XmlElementWrapper(name = "Capabilities")
@XmlElement(name = "Capability")
private List<Capability> capabilities;
getters and setters
}
@XmlRootElement(name = "Capability")
@XmlAccessorType(XmlAccessType.FIELD)
public class Capability {
@XmlAttribute(name = "CapabilityId")
private String id;
getters and setters
}
@XmlRootElement (name = "UserGroup")
@XmlAccessorType(XmlAccessType.FIELD)
public class UserGroup {
@XmlAttribute(name = "Name")
private String name;
getters and setters
}
Мой коддля демаршалинга это:
File file = new File(fileName);
ApplicationMetaData appMetaData = (ApplicationMetaData)
WorkWithXml.unmarshalXml(file, ApplicationMetaData.class);
public static Object unmarshalXml(File file, Class unmarshallerClass) {
try {
JAXBContext jaxbContext = JAXBContext.newInstance(unmarshallerClass);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
return unmarshaller.unmarshal(file);
} catch (JAXBException e) {
LOG.error("", e);
throw new AutotestError(e);
}
}
В результате у меня есть объект appMetaData со всеми ролями из файла.Роли имеют атрибуты, но все списки внутри ролей пусты.Не ноль, но пусто.Где у меня ошибка?
PS Это все про код Java:)