根据xml架构验证xml文件

alo*_*alo 2 java xml validation schema jaxb

这是关于针对XML模式验证XML文件(例如:marshalledfile.xml)(例如:schemafile.xsd).我们使用jaxb将java对象编组成一个xml文件.

  1. 最好的方法是什么?

  2. 有人可以给出一个如何做到这一点的简单例子吗?

感谢您的帮助.

谢谢,Alo

Tim*_*sen 5

您可以直接在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")));
Run Code Online (Sandbox Code Playgroud)

现在您已经拥有了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"));
Run Code Online (Sandbox Code Playgroud)

另请参阅"如何根据XML架构验证输入?" 在Jarfiller JAXB指南中.