Я не могу создать класс, представляющий XML-анализируемый документ, используя объект-компаньон.Scala - comanion object & apply: непонятная ошибка
Вот код класса:
package models
import javax.xml.bind.Element
import scala.xml.Elem
import javax.xml.validation.SchemaFactory
import javax.xml.transform.stream.StreamSource
trait MyXML {
case class ElémentXML(code_xml: scala.xml.Elem) {
def validate: Boolean = {
try ({
val schemaLang = "http://www.w3.org/2001/XMLSchema"
val factory = SchemaFactory.newInstance(schemaLang)
val schema = factory.newSchema(new StreamSource("Sites_types_libelles.xsd"))
val validator = schema.newValidator()
validator.validate(new StreamSource(code_xml.toString))
true
}) catch {
case t:Throwable => false
}
}
}
object ElémentXML {
def apply(fichier: String) {
try{
val xml_chargé = xml.XML.loadFile(fichier)
Some(new ElémentXML(xml_chargé))
}catch{
case e:Throwable => None
}
}
}
}
и вот код для приложения с помощью этого класса:
val xml1:ElémentXML = ElémentXML("app/models/exemple_bon.xml")
xml1 must not beEqualTo(None)
ошибка является:
type mismatch; found : String("app/models/exemple_bon.xml") required:
scala.xml.Elem
I просто не понимаю эту ошибку (и как я могу ее удалить).
спасибо!
привет, жаль, что я не очень хорошо понял ваш ответ ; Какая должна быть правильная строка кода для моего метода? – lolveley
Вам нужно '=' после 'def apply (fichier: String)', поэтому оно возвращает значение. – Kigyo
thanks.it работает – lolveley