加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 如何使用JAXB验证模式的XML?

发布时间:2020-12-14 16:36:48 所属栏目:Java 来源:网络整理
导读:我正在使用 XML和JAXB,因为我将 XML解组和编组为 Java对象,反之亦然.现在我试图根据我们的schema(test.xsd)验证我们的XML.假设如果我的XML中缺少任何必需的字段,那么我想知道在对模式test.xsd验证XML之后哪个字段丢失了. public void unmarshal(final InputS
我正在使用 XML和JAXB,因为我将 XML解组和编组为 Java对象,反之亦然.现在我试图根据我们的schema(test.xsd)验证我们的XML.假设如果我的XML中缺少任何必需的字段,那么我想知道在对模式test.xsd验证XML之后哪个字段丢失了.
public void unmarshal(final InputStream is) {
    final XMLInputFactory factory = XMLInputFactory.newInstance();
    final XMLStreamReader reader = factory.createXMLStreamReader(is);

    Object req = unmarshaller.unmarshal(reader);

    // how would I validate here?
}

我将如何验证我的XML与test.xsd模式.我的test.xsd架构路径是 –

C:workspaceonetwothreesrcmainjavacompackageservapversionOnetest.xsd

更新:将test.xsd加载为:

Schema schema = factorySchema.newSchema(new File("C:workspaceonetwothreesrcmainjavacompackageservapversionOnetest.xsd"));

解决方法

在您解除封锁之前,您只需要在Unmarshaller上设置一个 javax.xml.validation.Schema的实例.您可以在Unmarshaller上指定ValidationEventHandler的实现,以捕获在解组过程中发生的任何问题.

> http://docs.oracle.com/javase/7/docs/api/javax/xml/bind/Unmarshaller.html#setSchema%28javax.xml.validation.Schema%29

了解更多信息

我在博客上写了更多的这个用例:

> http://blog.bdoughan.com/2010/12/jaxb-and-marshalunmarshal-schema.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读