Проверка JiBX по схеме XSD при демаршаллинге в POJO - PullRequest
0 голосов
/ 27 марта 2012

Я не могу найти в Интернете никаких примеров, объясняющих, как проверять XML по существующей схеме XSD на этапе демаршаллинга.

В настоящее время у меня работает нормально:

IBindingFactory bfact = BindingDirectory
    .getFactory(aClass.class);
IUnmarshallingContext uctx = bfact.createUnmarshallingContext();
    return (aClass) uctx.unmarshalDocument(new FileInputStream(
          fname), null);
} catch (FileNotFoundException e) {
     throw new IOException(e);
    } catch (JiBXException e) {
     throw new IOException(e);
}

Но где в этом процессе я могу сказать Jibx проверять XML на соответствие схеме перед демаршаллингом объекта ?? Это возможно даже с JiBX? Я вижу примеры использования JaxB, но ни одного с JibX.

1 Ответ

0 голосов
/ 15 января 2013

JiBX не поддерживает полную проверку с нуля.

Вы должны создать javax.xml.stream.XMLInputFactory с реализацией, которая поддерживает проверку (например, предоставленную Sun как часть их JDK), затем вызвать setProperty (XMLInputFactory.IS_VALIDATING, Boolean.TRUE) и создать фактический парсер с вызовом createXMLStreamReader ().

Когда у вас есть проверяющий анализатор для ввода, вы можете использовать конструктор org.jibx.runtime.impl.StAXReaderWrapper, чтобы обернуть его как экземпляр IXMLReader, который затем можно установить в вашем org.jibx.runtime.impl. UnmarshallingContext экземпляр демаршаллинга контекста.

Странно, я знаю, вы можете найти запрос на упрощение здесь JIBX-381

...