def validateXml(xml){
String xsd = "src/main/ressources/fulltext-documents-v1.2.3.xsd"
def factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI)
def schema = factory.newSchema(new StreamSource(new File(xsd)))
def validator = schema.newValidator()
validator.validate(new StreamSource(new StringReader(xml)))
}
これは、xmlドキュメントの文字列表現を検証するための私の関数です。バリデーターによって発生する可能性のある例外をキャッチする他の関数の下
def xmlVerification(xml) {
Node rootNode = new XmlParser().parseText(xml)
def stringXml = XmlUtil.serialize(rootNode)
try{
validateXml(stringXml)
println "no error in text"
}catch(SAXParseException e){
println "column number "+e.getColumnNumber()
println "line number"+e.getLineNumber()
}
}
今のところ、例外が発生した列と行番号のみが表示されます(現時点では十分です)。
ここで、少なくとも2つのエラーがあるドキュメントがあると仮定します。私が望むのは、これらの2つのエラー(たとえば、テーブル内)を取得して、それらを処理することです。私のコードでは、発生した最初の例外で停止するため、2つのエラーを処理できません。2番目のものを修正するために最初のものを修正する必要があります(コードを2回再実行することによって)。
ドキュメント全体を調べ、すべての例外をストックして、.each {}ループなどで処理する方法はありますか?
それが十分に明確であったことを願っています
前もって感謝します !