Есть ли быстрый способ конвертировать объекты 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.