如何在Maven构建过程中针对DTD或XSD架构验证XML文档?Maven中的XML DTD/Schema验证
6
A
回答
3
有一个xml-maven-plugin可以检查XML文件是否为matching an XML schema,但我不认为它可以生成报告。
4
xml-maven-plugin的validate goal将检查格式是否正确,并根据模式进行验证。如果验证失败,构建将失败。
该插件不会生成任何报告,您希望报告中出于什么兴趣?有关无效文件的信息?
下面是一个例子用法:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>xml-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>validate</goal>
</goals>
</execution>
</executions>
<configuration>
<validationSets>
<validationSet>
<dir>src/main/xsd</dir>
<systemId>src/main/xmlschema.xml</systemId>
</validationSet>
</validationSets>
</configuration>
</plugin>
0
我已经使用了xml-maven-plugin一段时间(感谢Pascal Thivent和Rick Seller介绍我到这一点),但有一些问题吧。
我正在验证XML文档。在某些时候,我们将XML文档分成两个文件,都在他们自己的子目录中。那时,xml-maven-plugin没有再验证任何东西,因为文件被移动了,但也没有抱怨它。另外我个人发现配置不太直观,如果它不符合您的预期,则有点难以调试。
对我而言,我很高兴重新发现schemavalidate Ant任务与maven-antrun-plugin相结合。做了我需要的一切和更多。
在下面的例子中,我检查文件是否被选中。当然,您可以根据您的特定需求量身定制。作为一个奖励(强硬一点点的话题)我如何获取作为依赖下载的xsd的路径的例子。
<build>
<plugins>
<plugin><groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId><version>1.8</version>
<executions><execution>
<id>validate-xml-document-files-against-schema</id>
<phase>test</phase>
<goals><goal>run</goal></goals>
<configuration>
<target>
<copy file="${maven.dependency.com.mycompany.some-schema.xsd.path}" tofile="${xml-validation-dir}/some-schema.xsd" />
<resourcecount property="xml.count">
<fileset dir="${xml-validation-dir}" includes="**/*.xml" />
</resourcecount>
<fail message="fileset does not match any xml file (use same fileset for actual validation)">
<condition><equals arg1="${xml.count}" arg2="0" /></condition>
</fail>
<echo message="validating ${xml.count} xml files against some-schema" />
<schemavalidate>
<schema namespace="http://mycompany.com/some-namespace" file="${xml-validation-dir}/some-schema.xsd" />
<fileset dir="${xml-validation-dir}" includes="**/*.xml" />
</schemavalidate>
<echo message="all ${xml.count} xml documents are valid" />
</target>
</configuration>
</execution></executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.mycompany</groupId>
<artifactId>some-schema-artifact</artifactId>
<version>1.2.3</version>
<type>xsd</type>
</dependency>
</dependencies>
当然,这并不真正适合在工作的行家方式,但它的工作对我来说,也许别人是通过了解此选项帮助。
相关问题
- 1. 例外maven - 验证
- 2. XML验证vs Java验证
- 3. 验证Eclipse中的XML
- 4. Eclipse RCP中的XML验证
- 5. XMLReader中的XML验证()
- 6. Aptana XML验证
- 7. PHP XML验证
- 8. Eclipse验证XML
- 9. stax xml验证
- 10. XML验证
- 11. 在Flex3 Air中验证Xml
- 12. 在Android中验证XML Schema
- 13. 验证Maven原型属性
- 14. xml验证:验证URI类型
- 15. XML架构验证 - 现场验证
- 16. XML验证失败
- 17. Tiles2 + Struts2 xml验证
- 18. 验证XML对XSD
- 19. 验证XML和DTD
- 20. XML验证错误
- 21. XML DTD failling验证
- 22. XML验证错误
- 23. XML XSL XSD验证:
- 24. php-xml验证xsd
- 25. XML签名验证
- 26. 从Twitter验证XML
- 27. XML验证失败
- 28. XML验证错误
- 29. XML验证问题
- 30. XML验证混淆
是的,验证错误报告将帮助指出xml文件(如PMD或Findbug为java代码执行)中的可能错误。我注意到许多开发人员在处理项目时跳过了xml或jsp验证错误/警告,这可能会导致潜在的运行时错误。 – cetnar 2009-10-06 21:06:53
同意。对构建失败并不有用,但是失败构建并打印架构验证错误......现在这是非常有用的。尤其是当你需要调试某些东西时只使用IDE。 – avgvstvs 2015-11-10 16:07:19