【问题标题】:validate xml file against xml schema根据 xml 模式验证 xml 文件
【发布时间】:2010-03-05 12:01:11
【问题描述】:

这是关于根据 XML 模式(例如:schemafile.xsd)验证 XML 文件(例如:marshalledfile.xml)。我们正在使用 jaxb 将 java 对象编组到 xml 文件中。

  1. 最好的方法是什么?

  2. 有人可以举一个简单的例子来说明如何做吗?

感谢您的帮助。

谢谢, 阿洛

【问题讨论】:

    标签: java xml validation schema jaxb


    【解决方案1】:

    您可以直接在 Marshaller 中设置 Schema。首先需要创建一个Schema实例(javax.xml.validation包):

    SchemaFactory factory = SchemaFactory.newInstance(
                XMLConstants.W3C_XML_SCHEMA_NS_URI);
    Schema schema = factory.newSchema(new StreamSource(new File("schema1.xsd")));
    

    现在您已经有了 Schema,只需将 Marshaller 中的属性设置为 验证生成的 XML:

    MovieLibrary library = ...; // <-- your JAXB-annotated tree
    
    JAXBContext ctx = JAXBContext.newInstance(MovieLibrary.class);
    Marshaller marshaller = ctx.createMarshaller();
    marshaller.setSchema(schema);
    marshaller.marshal(new JAXBElement<MovieLibrary>(new QName("movieLibrary"), 
                                                        MovieLibrary.class, library),
                       new FileOutputStream("/tmp/library.xml"));
    

    另请参阅“如何根据 XML 模式验证输入?”在Jarfiller JAXB Guide

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-26
      • 1970-01-01
      • 2015-11-07
      • 1970-01-01
      • 2011-07-07
      • 2012-07-26
      • 1970-01-01
      相关资源
      最近更新 更多