Revision: 48328
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at June 29, 2011 01:21 by studioevoque
Initial Code
object XmlHelpers { val docBuilder = javax.xml.parsers.DocumentBuilderFactory.newInstance().newDocumentBuilder() } class NodeExtras(n: Node) { def toJdkNode(doc: org.w3c.dom.Document): org.w3c.dom.Node = n match { case Elem(prefix, label, attributes, scope, children @ _*) => // XXX: ns val r = doc.createElement(label) for (a <- attributes) { r.setAttribute(a.key, a.value.text) } for (c <- children) { r.appendChild(c.toJdkNode(doc)) } r case Text(text) => doc.createTextNode(text) case Comment(comment) => doc.createComment(comment) // not sure case a: Atom[_] => doc.createTextNode(a.data.toString) // XXX: other types //case x => throw new Exception(x.getClass.getName) } } class ElemExtras(e: Elem) extends NodeExtras(e) { override def toJdkNode(doc: org.w3c.dom.Document) = super.toJdkNode(doc).asInstanceOf[org.w3c.dom.Element] def toJdkDoc = { val doc = XmlHelpers.docBuilder.newDocument() doc.appendChild(toJdkNode(doc)) doc } } implicit def nodeExtras(n: Node) = new NodeExtras(n) implicit def elemExtras(e: Elem) = new ElemExtras(e)
Initial URL
https://gist.github.com/167566
Initial Description
Initial Title
Convert Scala XML to Java DOM
Initial Tags
DOM, xml
Initial Language
Scala