Есть ли быстрый способ конвертировать объекты Java xml в объекты Scala xml?

Scala имеет свою собственную библиотеку XML и предлагает встроенную поддержку. Однако одна из основных особенностей языка - это рекламировать как совместимость Java. Я ожидаю, что смогу использовать объекты java Node так же, как я использую scala.

Мои вопросы:

  • Какой самый быстрый способ конвертировать java-контейнеры xml в scala?
  • Есть ли какие-нибудь приятные впечатления, которые делают для вас что-то полезное?
  • Есть ли конструктор, который принимает элемент java, скажем, в API scala?

Ответ 1

Итак, я выкопал, и это лучшее, что я мог найти: http://www.jdom.org/docs/apidocs/org/jdom/output/XMLOutputter.html

Самый простой способ использовать это будет неявным:

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

Это не очень красиво для действительно больших объектов xml, поскольку они преобразуются в String, а затем обратно в объект XML, но он работает для малых и средних.

Ответ 2

В то время как не точно для Scala XML, существует решение для Scales Xml.

Он обеспечивает полную поддержку TrAX и, в соответствии с нормальным "Sun" JAXP impl (не все другие провайдеры позволяют это), позволяет конверсии с использованием StAX. Это означает, что вы можете конвертировать между Scales Xml и JAXP (или любой другой моделью, поддерживающей TrAX), без сериализации в строку сначала.

Тем не менее существует много существующей инфраструктуры для прямых объектов DOM, которые на самом деле не поддерживаются напрямую, учитывая неизменность всех трех альтернатив Scala Xml.