2011-09-05 14 views
10

Scala ma własną bibliotekę XML i oferuje wbudowaną obsługę. Jednak jedną z głównych cech tego języka jest reklamowana jako kompatybilność z Javą. Spodziewałbym się, że będę mógł korzystać z obiektów węzła Java w podobny sposób, jak używam obiektów scala.Czy istnieje szybki sposób konwertowania obiektów XML XML na obiekty XML Scala?

Moje pytania są następujące:

  • Jaki jest najszybszy sposób przekonwertować java xml do tych pojemników Scala?
  • Czy są jakieś miłe implikacje, które robią dla ciebie rzeczy?
  • Czy istnieje konstruktor pobierający element java na przykład w interfejsie API Scala?

Odpowiedz

1

Tak, mam grzebać i to jest najlepsze co mogłem znaleźć: http://www.jdom.org/docs/apidocs/org/jdom/output/XMLOutputter.html

Najprostszym sposobem korzystania z tego byłaby niejawna:

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

To nie jest bardzo ładne dla naprawdę dużych obiektów xml, gdy są konwertowane na ciąg, a następnie z powrotem do obiektu XML, ale działa dla małych i średnich.

1

Chociaż nie dla Scala XML, istnieje rozwiązanie dla Scales Xml.

Zapewnia pełną obsługę TrAX i, pod normalnym "niedz" JAXP impl (nie wszyscy inni dostawcy zezwalają na to), umożliwia konwersje przy użyciu StAX. Oznacza to, że możesz konwertować między Scales Xml i JAXP (lub dowolnym innym modelem obsługującym TrAX) bez uprzedniego serializowania do ciągu.

Istnieje jednak wiele istniejącej infrastruktury dla prostych obiektów DOM, która nie jest w rzeczywistości bezpośrednio obsługiwana ze względu na niezmienność wszystkich trzech alternatywnych rozwiązań Scala Xml.

+0

Jak to zrobić? Właśnie napisałem pytanie na ten sam temat: http://stackoverflow.com/questions/19044333/how-to-convert-scala-scales-xml-to-dom-sax – underspecified

Powiązane problemy