Я выполняю проверку xsd и пытаюсь получить имя текущего узла при возникновении исключения, но я получаю null
Я попробовал код ниже -
import javax.xml.transform.stream.StreamSource
import javax.xml.validation.SchemaFactory
import org.xml.sax.SAXException
import scala.xml.Elem
object Validator {
def main(args: Array[String]) {
val result =
if (validate("students.xml", "students.xsd"))
"Valid!"
else
"Not valid."
println(result)
}
def validate(xmlFile: String, xsdFile: String): Boolean = {
val schemaLang = "http://www.w3.org/2001/XMLSchema"
val factory = SchemaFactory.newInstance(schemaLang)
val schema = factory.newSchema(new StreamSource(xsdFile))
val validator = schema.newValidator()
try {
validator.validate(new StreamSource(xmlFile))
} catch {
case ex: SAXException => println(ex.getMessage)
val msg:Elem= validator.getProperty("http://apache.org/xml/properties/dom/current-element-node").asInstanceOf[Elem]
println("Current Node - "+msg)
return false
case ex: Exception => println(ex.getStackTrace)
}
true
}
}
Выход:
cvc-datatype-valid.1.2.1: 'Dinkar' is not a valid value for 'integer'.
Current Node - null
Not valid.
Пожалуйста, помогите мне в этом, чтобы сделать это. Спасибо!