是否有用于验证XML的gradle插件?

是否有用于验证XML的gradle插件?,xml,validation,gradle,automation,gradle-plugin,Xml,Validation,Gradle,Automation,Gradle Plugin,我在一个项目中工作,我们有用于代码生成的xml文件,我们使用gradle来构建它 我是gradle的新手,但我听说有很多插件可以帮助完成日常任务,我想知道是否有一些用于xml简单验证的插件(缺少引号和括号) 我想得到的文件名和遗漏的结果清单 PS试图在谷歌搜索,但找不到类似的东西 UPD如果在不久的将来需要对xml文件(标记、参数)进行完整验证,我该怎么办?编写自己的xml文件非常简单 class XmlValidate extends DefaultTask { @InputFiles

我在一个项目中工作,我们有用于代码生成的xml文件,我们使用
gradle
来构建它

我是
gradle
的新手,但我听说有很多
插件可以帮助完成日常任务,我想知道是否有一些用于xml简单验证的插件(缺少引号和括号)

我想得到的文件名和遗漏的结果清单

PS试图在谷歌搜索,但找不到类似的东西


UPD如果在不久的将来需要对xml文件(标记、参数)进行完整验证,我该怎么办?

编写自己的xml文件非常简单

class XmlValidate extends DefaultTask {
    @InputFiles
    private FileCollection xmlFiles

    @InputFile
    File xsd

    void xml(Object files) {
       FileCollection fc = project.files(files)
       this.xmlFiles = this.xmlFiles == null ?  fc : this.xmlFiles.add(fc)
    }

    @TaskAction
    public void validateXml() {
        DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder()
        Validator validator = null
        if (xsd != null) {
            SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI)
            Schema schema = factory.newSchema(new StreamSource(xsd))
            validator = schema.newValidator()
        } 
        Set<File> failures = [] as Set
        xmlFiles.forEach {
            Document document = null
            try {
                document = parser.parse(it)
            } catch (Exception e) {
                logger.error("Error parsing $it", e) 
                failures << it
            } 
            if (document && validator) {
                try {
                    validator.validate(new DOMSource(document))
                } catch (Exception e) {
                    logger.error("Error validating $it", e) 
                    failures << it
                } 
            } 
        }
        if (failures) throw new BuildException("xml validation failures $failures") 
    } 
}

XML世界中的术语“验证”有一个专门的含义:它意味着检查XML是否符合提供的某些模式。模式可能会说
p
元素可以包含
i
元素,但反之亦然。我怀疑这不是您想要的:短语“缺少引号和方括号”表明您只想检查文件是否包含格式正确的XML。在projectRoot/buildSrc/src/main/groovy/XMLValidate.groovy中添加了建议的代码。但在build.gradle中尝试使用此任务时出现以下错误
41:无法在第41行第29列解析类BuildException。if(失败)抛出新的BuildException(“xml验证失败$failures”)
task validateXml(type: XmlValidate) {
    xml ['foo.xml', 'bar.xml']
    xml fileTree(dir: 'src/main/resources/baz', include: '*.xml')
    xsd = file('path/to.xsd')
}