У меня проблема с проверкой объекта с заданным xsd. Классы были созданы из xsd.JAXB - SAXParseException Не удается найти объявление элемента
SchemaFactory factory = SchemaFactory
.newInstance("http://www.w3.org/2001/XMLSchema");
Schema schema = factory.newSchema(getClass().getResource("/xsd/test.xsd"));
JAXBContext context = JAXBContext.newInstance(aClass);
Unmarshaller u = context.createUnmarshaller();
u.setSchema(schema);
Object anObject = u.unmarshal(new StreamSource(new StringReader(
MESSAGE)), aClass);
Вот сообщение об исключении
[org.xml.sax.SAXParseException: CVC-elt.1: Не удается найти объявление элемента 'ACCESREFUSE.]
Вот XSD :
<?xml version="1.0" encoding="utf-8"?>
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:include schemaLocation="./include/CJCommon.xsd"/>
<xs:element name="ACCESREFUSE">
<xs:complexType>
<xs:sequence maxOccurs="1" minOccurs="1">
<!-- Entete -->
<xs:element maxOccurs="1" minOccurs="1" ref="IDOper"/>
<xs:element maxOccurs="1" minOccurs="1" ref="DateEvt"/>
<xs:element maxOccurs="1" minOccurs="1" ref="IDEvt"/>
<xs:element maxOccurs="1" minOccurs="1" ref="IDJoueur"/>
<xs:element maxOccurs="1" minOccurs="1" ref="HashJoueur"/>
<xs:element maxOccurs="1" minOccurs="1" ref="IDSession"/>
<xs:element maxOccurs="1" minOccurs="1" ref="IPJoueur"/>
<xs:element maxOccurs="1" minOccurs="0" ref="IDCoffre"/>
<!-- Corps -->
<xs:element maxOccurs="1" minOccurs="1" ref="TypAg"/>
<xs:element maxOccurs="1" minOccurs="0" name="CauseRefus" type="string-1024"/>
<xs:element maxOccurs="1" minOccurs="0" name="TypeRefus">
<xs:simpleType>
<xs:restriction base="string-1024">
<xs:enumeration value="DelaiIdentite"/>
<xs:enumeration value="RejetIdentite"/>
<xs:enumeration value="Interdit"/>
<xs:enumeration value="AutoInterdit"/>
<xs:enumeration value="OpVerrouille"/>
<xs:enumeration value="Verrouille"/>
<xs:enumeration value="Cloture"/>
<xs:enumeration value="Autre"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
Элемент ACCESREFUSE является корнем xml.
XML:
<ACCESREFUSE>
<dateEvt>Tue Oct 15 11:45:48 CEST 2013</dateEvt>
<hashJoueur>0000000000000000000000000000000000000000</hashJoueur>
<typAg>JC</typAg>
<causeRefus>Interdit</causeRefus>
<typeRefus>Interdiction Temporaire</typeRefus>
<idjoueur>81.252.190.129</idjoueur>
<idoper>002</idoper>
<idsession>301090</idsession>
<idevt>0</idevt>
<ipjoueur/>
<idcoffre/>
</ACCESREFUSE>
Любая идея? Спасибо
Ну, это странно, потому что валидация работала до ошибки. Только когда все в порядке, у меня есть ошибка с корневым элементом. Я попытался с InputStream, но результат был таким же – BkSouX
перед исключением, валидация работала, когда XML был неправильным. например, он сказал мне изменить поля ... – BkSouX
да, это работает спасибо. проблема была в CJCommon :) Спасибо за вашу помощь! – BkSouX