java - 根据 xml 模式验证 xml 文件

标签 java xml validation schema jaxb

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

  1. 最好的方法是什么?

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

感谢您的帮助。

谢谢, 阿洛

最佳答案

您可以直接在 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")));

现在您已经有了架构,只需将 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 .

关于java - 根据 xml 模式验证 xml 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2386486/

相关文章:

java - 使用套接字将静态文件从服务器发送到客户端

python - 在 python 中从 XML 中提取项目列表

android - Logback.xml 保存日志的相对文件路径

html - "This interface to HTML5 document checking is deprecated"

php - setter 、验证器和依赖注入(inject)

java - Android 从 app.Fragment 导航到 PreferenceFragment

java - 限制对 AWS S3 服务器上的 JSON 文件的写入访问

java - Spring请求验证不起作用

c# - 如何在 C# 中仅从 DateTime 序列化 Xml Date

validation - keras 在每 N 个训练时期后运行验证