Я пытаюсь демонтировать простой XML-документ из публичного API от Convio.Я не получаю никаких ошибок компилятора со следующим кодом, но он также не даст результата.Значения равны нулю.Если я удаляю элементы схемы и пространства имен из документа xml и удаляю атрибут пространства имен из POJO, тогда он будет работать нормально.Чего мне не хватает, чтобы иметь возможность работать с документом / пространством имен xsd?
Пример XML, который я пытаюсь проанализировать
<?xml version='1.0' encoding='UTF-8'?>
<getSingleSignOnTokenResponse xsi:schemaLocation="http://convio.com/crm/v1.0 http://service.convio.net/xmlschema/crm.public.v1.xsd" xmlns="http://convio.com/crm/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<token>abcdefghijklmnopqrstuvwxyz</token>
<cons_id>0123456789</cons_id>
</getSingleSignOnTokenResponse>
И POJO с аннотациями:
@XmlRootElement(name = "getSingleSignOnTokenResponse", namespace = "http://convio.com/crm/v1.0")
public class SingleSignOnResponseBean
{
@XmlElement(name = "token")
public String token;
@XmlElement(name = "cons_id")
public int consId;
}
Теперь я использую Джерси для выполнения реальной работы, но, поскольку я не смог разобрать его с помощью Джерси, я настроил unmarshaller вручную, используя статический xml-файл на моем компьютере с результатом XML.выше:
JAXBContext jc = JAXBContext.newInstance(new Class[] {org.orgname.utility.convio.sso.api.SingleSignOnResponseBean.class});
Unmarshaller u = jc.createUnmarshaller();
SingleSignOnResponseBean bean2 = (SingleSignOnResponseBean) u.unmarshal(new File("C:/token.xml"));
System.out.println(bean2.token);
Это, вероятно, очень просто, и я просто не вижу, почему он не будет работать, если определены элементы схемы и пространства имен.Я видел некоторые другие комментарии о настройке какого-то SAX-фильтра для удаления пространства имен, но, поскольку я прихожу через REST-вызов из Джерси напрямую, я не верю, что у меня есть возможность сделать это.Есть идеи?