Scala XML - passing down values using the .map method in XML -


using scala, have code:

def insertrefintoxml(ref: int, entry: node): node = entry match {     case <root>{ mainroot @ _* }</root>          => <root>{ mainroot.map(insertrefintoxml ref  )}</root>     case <here>{ contents }</here> => <here>{ ref }</here>     case other @ _ => other 

}

where want keep on passing "ref" value on down until here element, , swap in.

this doesn't work. will?

check this link originating question

see if works you:

object testxml {   def main(args: array[string]) {     val xml =        <root>             <here>       <dealid>foo</dealid>     </here>           </root>      println(insertrefintoxml(2, xml))   }    def insertrefintoxml(ref: int, entry: node): node = {         def doinsertref(n:node):node = {           n match {         case <root>{ mainroot @ _* }</root> => <root>{ mainroot.map(doinsertref)}</root>         case <here><dealid>{ contents }</dealid></here> => <here><dealid>{ ref }</dealid></here>         case other @ _ => other       }            }     doinsertref(scala.xml.utility.trim(entry))   } } 

there couple of issues. first, in order use insertrefintoxml in call map in way wanted to, need have 1 arg , not two. fix that, created local function def , value ref in there via closure. solve problem instead:

  def insertrefintoxml(ref: int, entry: node): node = {            entry match {       case <root>{ mainroot @ _* }</root> => <root>{ mainroot.map(insertrefintoxml(ref, _))}</root>       case <here><dealid>{ contents }</dealid></here> => <here><dealid>{ ref }</dealid></here>       case other @ _ => other     }          } 

and call this:

insertrefintoxml(2, scala.xml.utility.trim(xml)) 

which brings me second issue. i'm trimming match statements match correctly. when run code, believe gives output desire.


Comments

Popular posts from this blog

php - Calling a template part from a post -

Firefox SVG shape not printing when it has stroke -

How to mention the localhost in android -