2010-03-05 133 views
2

這是針對XML模式(例如:schemafile.xsd)驗證XML文件(例如:marshalledfile.xml)。我們使用jaxb將java對象編組成一個xml文件。根據xml模式驗證xml文件

  1. 什麼是最好的辦法呢?

  2. 有人可以給一個簡單的例子,說明如何做到這一點?

感謝您的幫助。

感謝, ALO

回答

5

可以在現Marshaller直接設置模式。首先,你需要創建一個架構實例(javax.xml.validation包):

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

現在您有了架構,只需在現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