У вас есть несколько вариантов:
Вариант 1 - MOXy JAXB & @ XmlPath
Вы можете использовать реализацию MOXy JAXB и расширение @XmlPath для достижения желаемого результата:
import javax.xml.bind.annotation.XmlRootElement;
import org.eclipse.persistence.oxm.annotations.XmlPath;
@XmlRootElement(name="response")
public class OurResponse {
private String authCode;
@XmlPath("subXml/authCode/text()")
public String getAuthCode() {
return authCode;
}
public void setAuthCode(String authCode) {
this.authCode = authCode;
}
}
Для получения дополнительной информации см .:
Вариант 2 - Любой JAXB Impl и @ XmlJavaTypeAdapter
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
@XmlRootElement(name="response")
public class OurResponse {
private String authCode;
@XmlJavaTypeAdapter(AuthCodeAdapter.class)
@XmlElement(name="subXml")
public String getAuthCode() {
return authCode;
}
public void setAuthCode(String authCode) {
this.authCode = authCode;
}
}
с
import javax.xml.bind.annotation.adapters.XmlAdapter;
public class AuthCodeAdapter extends XmlAdapter<SubXml, String> {
@Override
public String unmarshal(SubXml v) throws Exception {
return v.getAuthCode();
}
@Override
public SubXml marshal(String v) throws Exception {
SubXml subXml = new SubXml();
subXml.setAuthCode(v);
return subXml;
}
}
и
public class SubXml {
private String authCode;
public String getAuthCode() {
return authCode;
}
public void setAuthCode(String authCode) {
this.authCode = authCode;
}
}
Для получения дополнительной информации см .: