Tengo un archivo XML en el que me gustaría asignar algunos atributos de in con un script. Por ejemplo:Cómo cambiar el atributo en el elemento XML de Scala
<a>
<b attr1 = "100" attr2 = "50"/>
</a>
pueden tener atributos escalado por un factor de dos:
<a>
<b attr1 = "200" attr2 = "100"/>
</a>
Esta página tiene una sugerencia para añadir atributos, pero no detalla una forma de asignar un atributo actual con una función (de esta manera haría que muy duro): http://www.scalaclass.com/book/export/html/1
lo que yo he llegado con es crear manualmente el XML (no Scala)-lista enlazada ... algo así como:
// a typical match case for running thru XML elements:
case Elem(prefix, e, attributes, scope, children @ _*) => {
var newAttribs = attributes
for(attr <- newAttribs) attr.key match {
case "attr1" => newAttribs = attribs.append(new UnprefixedAttribute("attr1", (attr.value.head.text.toFloat * 2.0f).toString, attr.next))
case "attr2" => newAttribs = attribs.append(new UnprefixedAttribute("attr2", (attr.value.head.text.toFloat * 2.0f).toString, attr.next))
case _ =>
}
Elem(prefix, e, newAttribs, scope, updateSubNode(children) : _*) // set new attribs and process the child elements
}
Es horrible, prolijo y innecesariamente reordena los atributos en la salida, lo que es malo para mi proyecto actual debido a un código de cliente incorrecto. ¿Hay una forma scala-esque de hacer esto?
Estoy sorprendido de lo mal que parece ser la biblioteca en este sentido. –
Muchas buenas respuestas aquí. También vea http://stackoverflow.com/a/23092226/35274 – Philippe