У меня есть элемент xml, определенный как boolean, но когда я передаю строку 'blablabla', он получает сопоставленное значение true.jaxb привязка случайной строки к xs: boolean 'true'
Вот XSD:
<xs:complexType name="usageAttributesType">
<xs:sequence>
<xs:element name="force-reservation" type="xs:boolean" minOccurs="0" />
<xs:element name="force-purchase" type="xs:boolean" minOccurs="0" />
.............
И запрос XML выглядит следующим образом:
<usage-auth-rate-charge>
<msisdn>444fh7775hweff</msisdn>
<service-id>c001</service-id>
<usage-attributes>
<force-purchase>toast</force-purchase>
В моей Java у меня есть:
JAXBContext jc = JAXBContext.newInstance("com.mycompany.binding.request");
jc.createUnmarshaller().unmarshal(xml);
И связанный объект JAXB имеет флаг forcePurchase установлен в true. Если я оставлю это из запроса xml или задал значение false, флаг будет установлен на false (правильно).
Может ли кто-нибудь сказать мне, почему он разоблачает «тост» как истинный? Кстати это не имеет значения, какую строку я ставлю там, он всегда получает разобрано как верно ...
По раздражающих историческим причинам, мы используем JAXB 1.0
Благодаря Блез для быстрого реагирования. Единственное, чего не было в вашем ответе, было то, что мне пришлось включить проверку для unmarshaller следующим образом: 'unmarshaller.setValidating (true);' – mdarwin
Фактически я обнаружил, что в jaxb 1.0 обработчик проверки по умолчанию обрабатывает этот случай правильно, поэтому мне не нужно перегружать его, но мне нужно включить проверку. – mdarwin