<sso:serviceResponse xmlns:sso='http://www.yale.edu/tp/cas' xmlns:cas='http://www.yale.edu/tp/cas'> sso:authenticationSuccess sso:user04145</sso:user> cas:attributes cas:ID_NUMBER04145</cas:ID_NUMBER> cas:USER_FIRST_LOGIN4</cas:USER_FIRST_LOGIN> cas:USER_NAME郭晓航</cas:USER_NAME> cas:checkAliveTicketTGT-04145-4-BUfTzobYE5xpOcPnZN5tq1dCeMOHHDaCJgDRlYjBIxOcZGWtnE-tpass</cas:checkAliveTicket> cas:serviceId2897800439685120</cas:serviceId> </cas:attributes> sso:attributes <sso:attribute name='id_number' type='java.lang.String' value='04145'></sso:attribute> 如何解析成实体类内容:这段XML代码可以解析成以下实体类:

@XmlRootElement(name = "serviceResponse", namespace = "http://www.yale.edu/tp/cas")
@XmlAccessorType(XmlAccessType.FIELD)
public class ServiceResponse {

    @XmlElement(name = "authenticationSuccess", namespace = "http://www.yale.edu/tp/cas")
    private AuthenticationSuccess authenticationSuccess;

    // getters and setters
}

@XmlAccessorType(XmlAccessType.FIELD)
public class AuthenticationSuccess {

    @XmlElement(name = "user", namespace = "http://www.yale.edu/tp/cas")
    private String user;

    @XmlElement(name = "attributes", namespace = "http://www.yale.edu/tp/cas")
    private Attributes attributes;

    @XmlElement(name = "sso:attributes", namespace = "http://www.yale.edu/tp/cas")
    private SsoAttributes ssoAttributes;

    // getters and setters
}

@XmlAccessorType(XmlAccessType.FIELD)
public class Attributes {

    @XmlElement(name = "ID_NUMBER", namespace = "http://www.yale.edu/tp/cas")
    private String idNumber;

    @XmlElement(name = "USER_FIRST_LOGIN", namespace = "http://www.yale.edu/tp/cas")
    private String userFirstLogin;

    @XmlElement(name = "USER_NAME", namespace = "http://www.yale.edu/tp/cas")
    private String userName;

    @XmlElement(name = "checkAliveTicket", namespace = "http://www.yale.edu/tp/cas")
    private String checkAliveTicket;

    @XmlElement(name = "serviceId", namespace = "http://www.yale.edu/tp/cas")
    private String serviceId;

    // getters and setters
}

@XmlAccessorType(XmlAccessType.FIELD)
public class SsoAttributes {

    @XmlElement(name = "attribute", namespace = "http://www.yale.edu/tp/cas")
    private List<Attribute> attributeList;

    // getters and setters
}

@XmlAccessorType(XmlAccessType.FIELD)
public class Attribute {

    @XmlAttribute(name = "name")
    private String name;

    @XmlAttribute(name = "type")
    private String type;

    @XmlAttribute(name = "value")
    private String value;

    // getters and setters
}

这些实体类使用了Java的JAXB注解,可以通过JAXBContext来将XML转换成Java对象。例如:

JAXBContext jaxbContext = JAXBContext.newInstance(ServiceResponse.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
ServiceResponse serviceResponse = (ServiceResponse) unmarshaller.unmarshal(xmlFile);
解析SSO服务响应XML:将XML代码映射到Java实体类

原文地址: https://www.cveoy.top/t/topic/jNkG 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录