XML-файл выглядит следующим образом:XML в JavaBean
<AuthnRequest xmlns="A" ID="B">
<Issuer xmlns="A">SOMETHING</Issuer>
<NameIDPolicy Format="B" AllowCreate="true"/>
</AuthnRequest>
Так как преобразовать этот файл с большим количеством атрибутов в бина?
Я устал это так, но не работает
@XmlRootElement(name="AuthnRequest")
@XmlAccessorType(XmlAccessType.FIELD)
public class UserAuthn {
@XmlAttribute
private String xmlns;
@XmlAttribute
private String ID;
@XmlAttribute
private String Version;
@XmlAttribute
private String IssueInstant;
@XmlElement
private List<Issuer> Issuers;
@XmlElement
private List<NameIDPolicy> NameIDPolicys;
// Getters and Setters
}
Класс эмитента
private String xmlns;
@XmlAttribute
public String getXmlns() {
return xmlns;
}
public void setXmlns(String xmlns) {
this.xmlns = xmlns;
}
Класс NameIDPolicy тот же:
private String Format;
private String AllowCreate;
@XmlAttribute(name="AllowCreate")
public String getFormat() {
return Format;
}
public void setFormat(String format) {
Format = format;
}
@XmlAttribute(name="Format")
public String getAllowCreate() {
return AllowCreate;
}
public void setAllowCreate(String allowCreate) {
AllowCreate = allowCreate;
}
И ошибка
threw exception [Request processing failed; nested exception is
javax.xml.bind.UnmarshalException: unexpected element (uri:"A", local:"AuthnRequest").
Expected elements are <{}AuthnRequest>] with root cause
Get (или записи) в XSD и использовать такой инструмент, как [JAXB] (HTTPS://jaxb.java.net/). – sp00m
@ sp00m Привет. Не могли бы вы взглянуть на мою работу, которую уже сделали? –
'xmlns' не является атрибутом, это объявление пространства имен. Вам необходимо настроить аннотации JAXB для использования правильного пространства имен, которое вы обычно делаете с аннотацией на уровне пакета. –