是否有用于验证XML的gradle插件?
我在一个项目中工作,我们有用于代码生成的xml文件,我们使用是否有用于验证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
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')
}