0

我在网上找不到任何解释如何在解组阶段根据现有 XSD 模式验证 XML 的示例。

目前我有哪些工作正常:

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 的示例。

4

1 回答 1

0

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

于 2013-01-15T17:52:46.073 回答