Tengo un código que lee un archivo XML. Algunos de los atributos de los elementos que necesito procesar son opcionales. Estoy tratando de usar la Opción [T] para administrarlos. He escrito el siguiente chulo del tipo NodeSeq devuelto por el operador \
Nodo:Procesamiento de atributos xml opcionales en Scala
class NodeSeqWrapper(nodeSeq: NodeSeq) {
def textOption: Option[String] = {
val text = nodeSeq.text
if (text == null || text.length == 0) None else Some(text)
}
}
implicit def nodeSeqWrapper(nodeSeq: NodeSeq): NodeSeqWrapper =
new NodeSeqWrapper(nodeSeq)
y luego lo llaman así:
(node \ "@attr").textOption.getOrElse("Some default value")
Si el nodo tiene el atributo "attr", este código obtiene valor Si no lo hace, se devuelve el valor "Algunos valores predeterminados".
¿Cómo puedo mejorar esto? ¿Hay alguna forma de plegar la definición de clase en el método implícito? ¿Hay una mejor manera de obtener valores de atributo "opcionales"? ¿Estoy usando Option[T]
"correctamente"?
Es posible que desee llamar a su método 'textOption', en el mismo estilo que los métodos' head' de 'Seq' y' head'. –
Suena bien. Cambiaré mi código. Actualizando la pregunta también. – Ralph