By Alvin Alexander. Last updated: June 4, 2016
Here's a short example of how to use the Scala XML NodeBuffer class:
scala> val x = new xml.NodeBuffer x: scala.xml.NodeBuffer = ArrayBuffer() scala> x += <li>apple</li> res0: x.type = ArrayBuffer(<li>apple</li>) scala> x += <li>banana</li> res1: x.type = ArrayBuffer(<li>apple</li>, <li>banana</li>) scala> val ul = <ul>{x}</ul> ul: scala.xml.Elem = <ul><li>apple</li><li>banana</li></ul>
As you can see, I build up a little list of li
tags, and then include those in a ul
tag at the end.
As you can see from the REPL response, the XML NodeBuffer
class is closely related to the ArrayBuffer
class. The NodeBuffer
class extends the ArrayBuffer
class, as shown in the following source code:
class NodeBuffer extends scala.collection.mutable.ArrayBuffer[Node] { def &+(o: Any): NodeBuffer = { o match { case null | _: Unit | Text("") => // ignore case it: Iterator[_] => it foreach &+ case n: Node => super.+=(n) case ns: Iterable[_] => this &+ ns.iterator case ns: Array[_] => this &+ ns.iterator case d => super.+=(new Atom(d)) } this } }
The link to the NodeBuffer
class source code keeps changing, but you can find it by following this NodeBuffer Scaladoc link, and then clicking on the source link.