【发布时间】:2010-03-05 12:01:11
【问题描述】:
这是关于根据 XML 模式(例如:schemafile.xsd)验证 XML 文件(例如:marshalledfile.xml)。我们正在使用 jaxb 将 java 对象编组到 xml 文件中。
最好的方法是什么?
有人可以举一个简单的例子来说明如何做吗?
感谢您的帮助。
谢谢, 阿洛
【问题讨论】:
标签: java xml validation schema jaxb
这是关于根据 XML 模式(例如:schemafile.xsd)验证 XML 文件(例如:marshalledfile.xml)。我们正在使用 jaxb 将 java 对象编组到 xml 文件中。
最好的方法是什么?
有人可以举一个简单的例子来说明如何做吗?
感谢您的帮助。
谢谢, 阿洛
【问题讨论】:
标签: java xml validation schema jaxb
您可以直接在 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。
【讨论】: