当前位置: 首页 > 面试题库 >

如何使用JAXB针对模式验证XML?

咸育
2023-03-14
问题内容

我有工作XML,并JAXB为我解编和编组XML转换为Java对象,反之亦然。现在,我试图根据我们的模式(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?
}

如何根据test.xsd模式验证XML。我的test.xsd模式路径是-

C:\ workspace \一\二\三\ src \ main \ java \ com \ package \ serv \ ap \
versionOne \ test.xsd

更新:将test.xsd加载为:

Schema schema = factorySchema.newSchema(new File("C:\\workspace\\one\\two\\three\\src\\main\\java\\com\\package\\serv\\ap\\versionOne\\test.xsd"));

问题答案:

进行解组之前,您只需要在上设置javax.xml.validation.Schemaon的实例Unmarshaller。您可以指定的实现ValidationEventHandlerUnmarshaller赶在解组过程中出现的任何问题。

  • 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


 类似资料:
  • 问题内容: 在我的jsf应用程序中,我知道如何使用jsf转换器针对一种模式验证用户输入: 但是如果我想让用户也可以输入格式为 “ MM-dd-yyyy” 的日期怎么办? 我认为可以从jsf扩展DateConverter来完成,但是我已经尝试过了,但是失败了。您是否有一个有效的示例来 针对多种模式验证输入日期? 谢谢。 更新 :我正在使用jsf 1.2 问题答案: 创建一个在组件上接受多个模式的自定

  • 问题内容: 我有一个XML文件,并且有一个XML模式。我想针对该架构验证文件,并检查其是否符合该架构。我正在使用python,但是如果python中没有这样有用的库,则可以使用任何语言。 我在这里最好的选择是什么?我会担心如何快速启动和运行它。 问题答案: 绝对可以。 使用预定义的架构定义,加载文件并捕获任何XML架构错误: 关于编码的注意事项 如果模式文件包含带有编码(例如)的xml标记,则上面

  • 我试图根据Python中的JSON模式验证TSV文件的行。下面是该模式的一个示例: TSV文件如下所示: null

  • 我的目标是读取CSV文件,将其转换为XML,并根据XSD对其进行验证。代码如下: 错误: 线程“main”组织中出现异常。阿帕奇。骆驼FailedToCreateRouteException:无法在以下位置创建路由1: 此外,我还想配置如果XML对给定的XSD无效,是否会发生异常。我们如何配置它? 请好心帮忙。

  • 问题内容: 我尝试使用Jaxb在变量中获取验证消息。从此处尝试示例http://docs.oracle.com/cd/E17802_01/webservices/webservices/docs/1.6/api/javax/xml/bind/Unmarshaller.html 我的代码: 但是什么也没发生。我究竟做错了什么 ? 问题答案: 以下内容应有所帮助: JAXB2ValidationEve

  • 我正在使用Jena框架来操作RDF文件,但我找不到一种方法来用您各自的RDF模式验证RDF。我正在尝试这个方法: 但它总是返回true。