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

How to mention the localhost in android -

php - Calling a template part from a post -

c# - String.format() DateTime With Arabic culture -