2011-09-05 16 views
10

Scala tiene su propia biblioteca XML y ofrece soporte integrado para ella. Sin embargo, una de las principales características del lenguaje es la compatibilidad con Java. Esperaría poder usar los objetos del nodo Java de una manera similar a como uso los scala.¿Existe alguna forma rápida de convertir objetos Java xml en objetos Scala xml?

Mis preguntas son:

  • ¿Cuál es la forma más rápida de convertir los contenedores Java XML a los Scala?
  • ¿Hay alguna implícita agradable que haga cosas para usted?
  • ¿Hay un constructor que toma un elemento de Java, por ejemplo, en la API de Scala?

Respuesta

1

lo tanto, he cavado alrededor y esto es lo mejor que pude encontrar: http://www.jdom.org/docs/apidocs/org/jdom/output/XMLOutputter.html

La forma más fácil de utilizar esto sería en una implícita:

implicit def javaToScalaXML(jElem: org.jdom.Element): scala.xml.Element = { 
    return XML.loadstring(XMLOuputter.outputString(jElem)) 
} 

Esto no es muy bonito para objetos xml realmente grandes, ya que se convierten a String y luego a un objeto XML, pero funciona para los pequeños y medianos.

1

Aunque no exactamente para Scala XML, hay una solución para Scales Xml.

Proporciona compatibilidad total con TrAX y, bajo el estándar 'Sun' JAXP impl (no todos los demás proveedores lo permiten), permite conversiones utilizando StAX. Eso significa que puede convertir entre Scales Xml y JAXP (o cualquier otro modelo que admita TrAX) sin serializar primero una cadena.

Sin embargo, existe una gran cantidad de infraestructura existente para objetos DOM directos que no son realmente compatibles debido a la inmutabilidad de las tres alternativas de Scala Xml.

+0

¿Cómo se hace esto? Acabo de publicar una pregunta sobre el tema aquí: http://stackoverflow.com/questions/19044333/how-to-convert-scala-scales-xml-to-dom-sax – underspecified

Cuestiones relacionadas