Я работаю с JAXB 2.x и пытается проверить XML-документ с данным XSD, используя следующий учебникJAXB проверка +2,0 схемы проблема
ее код, который я написал
unmarshaller.setSchema(schema);
SAXSource source = new SAXSource(new InputSource(xmlFileLocation));
Validator validator = schema.newValidator();
validator.setErrorHandler(new XMLErrorHandler<Object>());
try {
validator.validate(source);
} catch (SAXException e) {
и мой класс XMLErrorHanlder уже после подписания
public class XMLErrorHandler<T> implements ErrorHandler {
public void error(SAXParseException exception) throws SAXException {
xmlUnmarshaller.setValidationFlag(true);
log.error(
"Line:Col[" + exception.getLineNumber()
+ ":" + exception.getColumnNumber()
+ "]:" + exception.getMessage());
exception.printStackTrace();
}
}
}
код для предупреждения и со смертельным исходом был удален теперь его Валидация XML с XSD, но это только с указанием встретившихся ошибку, пока я хочу, чтобы напечатать на colsole все ошибки и предупреждения на консоли
я не знаю, где я нахожусь делает неправильно любая помощь в этом будет полезно
Edit1 здесь часть XSD файл
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="destination" type="Destination"/>
<xs:complexType name="Destination">
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="destinationID" type="xs:string" minOccurs="0"/>
<xs:element name="shortDescription" type="xs:string" minOccurs="0"/>
<xs:element name="longDescription" type="xs:string" minOccurs="0"/>
<xs:element name="stateID" type="xs:string"/>
<xs:element name="typeCode" type="xs:int"/>
<xs:element name="countryCode" type="xs:string"/>
<xs:element name="categories" type="xs:string"/>
<xs:element name="transport" type="Transport" minOccurs="0" maxOccurs="1"/>
<xs:element name="cultures" type="Cultures" minOccurs="0"/>
<xs:element name="events" type="Events" minOccurs="0" maxOccurs="1"/>
<xs:element name="placesToVisit" type="PlacesToVisit" minOccurs="0" maxOccurs="1"/>
<xs:element name="contacts" type="Contact" minOccurs="0" maxOccurs="1"/>
<xs:element name="addresses" type="address" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
и файл XML является
<destination xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="destination.xsd">
<name>Palampur</name>
<destinationID>PLP</destinationID>
<shortDescription>shortDescription</shortDescription>
<longDescription>longDescription</longDescription>
<typeCode>0</typeCode>
<categories>categories</categories>
, что мое предположение после того, как делают некоторые R & D является то, что существует некоторая проблема со структурой XSD или сгенерированного XML, но я не уверен, что Абт
@lucho: я фатальную ошибку обработки также в моем коде и трассировки стека не sjowing любую такую ошибку –
Тогда вам лучше разместить содержимое вашего XML-файла (расположенного в xmlFileLocation). Если xsd не то же самое, что и в учебнике, это тоже. Учебник работает так, как ожидалось:/ –
А как насчет этого? :) -> xmlUnmarshaller.setValidationFlag (true); Вам это не нужно. –