2011-09-05 11 views
10

Scala ha una propria libreria XML e offre supporto integrato per esso. Tuttavia, una delle caratteristiche principali del linguaggio è propagandata come compatibilità Java. Mi aspetterei di essere in grado di utilizzare oggetti java Node in un modo simile a quello che uso su scala uno.Esiste un modo rapido per convertire oggetti xml Java in oggetti Scala xml?

Le mie domande sono:

  • Qual è il modo più veloce per convertire i contenitori xml java a quelli Scala?
  • Ci sono dei buoni impliciti che fanno cose per te?
  • C'è un costruttore che prende un elemento java, ad esempio, nell'API Scala?

risposta

1

Così, ho scavato intorno e questo è il migliore che ho trovato: http://www.jdom.org/docs/apidocs/org/jdom/output/XMLOutputter.html

Il modo più semplice per utilizzare questo sarebbe in un implicito:

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

Questo non è molto carino per oggetti xml di grandi dimensioni quando vengono convertiti in String e quindi nuovamente in un oggetto XML, ma funziona per quelli di piccole e medie dimensioni.

1

Anche se non esattamente per Scala XML, esiste una soluzione per Scales Xml.

Fornisce il supporto completo di TrAX e, con il normale JAXP impl ('Sun') (non tutti gli altri provider lo consentono), consente conversioni utilizzando StAX. Ciò significa che è possibile convertire tra Scales Xml e JAXP (o qualsiasi altro modello che supporta TrAX) senza serializzare prima una stringa.

C'è comunque molta infrastruttura esistente là fuori per oggetti DOM dritti che non sono realmente direttamente supportati data l'immutabilità di tutte e tre le alternative di Scala Xml.

+0

Come si fa? Ho appena postato una domanda sull'argomento qui: http://stackoverflow.com/questions/19044333/how-to-convert-scala-scales-xml-to-dom-sax – underspecified

Problemi correlati