Scala:将org.w3c.dom.Document转换为scala.xml.NodeSeq

par*_*rsa 12 java xml dom scala

标题非常明显.如何将org.w3c.dom.Document的实例转换为Scala NodeSeq,以享受它的便利?

干杯
帕萨

Itt*_*ayD 12

  def asXml(dom: org.w3c.dom.Node): Node = {
    val dom2sax = new DOM2SAX(dom)
    val adapter = new NoBindingFactoryAdapter
    dom2sax.setContentHandler(adapter)
    dom2sax.parse()
    return adapter.rootElem
  }
Run Code Online (Sandbox Code Playgroud)


小智 5

IttayD的答案适用于所有w3c XML - 除了dom4j w3c兼容的xmls.以下适用于所有w3c类型:

def asXml(dom: _root_.org.w3c.dom.Node): Node = {
    val source = new DOMSource(dom)
    val adapter = new NoBindingFactoryAdapter
    val saxResult = new SAXResult(adapter)
    val transformerFactory = javax.xml.transform.TransformerFactory.newInstance()
    val transformer = transformerFactory.newTransformer()
    transformer.transform(source, saxResult)
    adapter.rootElem
  }
Run Code Online (Sandbox Code Playgroud)