
Untitled
By: a guest on
Apr 24th, 2012 | syntax:
None | size: 1.46 KB | hits: 29 | expires: Never
Jerkson makes Scala JSON so easy, can it be the same for XML?
Json(generate(Job.search(parseDate(date),accountId)
.map(job => Map("id" -> job.id,
"name" -> job.name,
"userId" -> job.userId.getOrElse("")
))))
def tag( name: String, content: Seq[Node] ): Node =
<xml></xml>.copy( label = name, child = content )
def toXML( label: String, content: String ): Node =
tag( label, Text( content ) )
def toXML( root: String, map: Map[_,_] ): Node = {
val children = for( (k,v) <- map ) yield {
v match {
case m: Map[_,_] => toXML( k.toString, m )
case a => toXML(k.toString, a.toString )
}
}
tag( root, children.toSeq )
}
val data = Map(
"id" -> 121,
"foo" -> Map(
"hoo" -> "bar",
"goo" -> "baz"
)
)
val xml = convert.toXML( "example", data )
<example>
<id>121</id>
<foo>
<hoo>bar</hoo>
<goo>baz</goo>
</foo>
</example>
val someNode = <root>
<child>
Some stuff goes here
</child>
</root>
someNode "child" // returns the child node
someNode "child" text // returns the text of the child node
val ns = Namespace("test:uri")
val nsa = Namespace("test:uri:attribs")
val nsp = nsa.prefixed("pre")
val builder =
ns("Elem") /@ (nsa("pre", "attr1") -> "val1",
"attr2" -> "val2",
nsp("attr3") -> "val3") /(
ns("Child"),
"Mixed Content",
ns("Child2") /( ns("Subchild") ~> "text" )
)