我试图证明我的XML在Nifi上形成良好。
我已经针对某些模式对其进行了验证,但有时我没有模式,所以希望确认它已经很好地形成了。但是,所有的XML处理器似乎都需要一个架构等,并且不仅仅表明它的格式正确。
有人可以提供一些帮助吗?非常感谢
要添加到kjhughes的答案(特定于NiFi),如果你总是知道根标签(让我们称之为“root”),你可以使用this SO post中提到的XSD和ValidateXml处理器。
如果您不知道根标记,则可以使用ExecuteGroovyScript,将“Failure strategy”属性设置为“transfer to failure”,并将“Script Body”设置为以下脚本:
def flowFile = session.get()
if(!flowFile) return
InputStream i = flowFile.read()
new XmlSlurper().parse(i)
i.close()
REL_SUCCESS << flowFile
只需尝试使用任何一致的XML解析器解析它。
如果它parses successfully,即没有致命错误,那么它是well-formed:
良好的约束
[定义:适用于所有well-formed XML文档的规则。违反良好形成的限制是fatal errors。]