Существует ли быстрый способ преобразования объектов Java xml в объекты Scala xml? - PullRequest
10 голосов
/ 05 сентября 2011

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

Мои вопросы:

  • Какой самый быстрый способ конвертировать Java-контейнеры XML в Scala-контейнеры?
  • Есть ли какие-нибудь приятные последствия, которые делают вещи для вас?
  • Есть ли конструктор, который принимает Java-элемент, скажем, в Scala API?

Ответы [ 2 ]

1 голос
/ 06 ноября 2011

Хотя это не совсем для Scala XML, есть решение для Scales Xml .

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

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

1 голос
/ 06 сентября 2011

Итак, я покопался, и это лучшее, что я смог найти: 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, но это работает для объектов малого и среднего размера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...