特定の xsd でオブジェクトを検証しようとすると問題が発生します。クラスは xsd から生成されています。
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>
何か案が ?ありがとうございました