Решение MarkLogic to Java & Back - PullRequest
       20

Решение MarkLogic to Java & Back

5 голосов
/ 06 октября 2011

Мне нужно запросить XML с сервера MarkLogic и упаковать его в объекты Java. Какой хороший способ пойти по этому поводу? В частности:

  1. Влияет ли использование MarkLogic на стек технологий XML? (т.е. есть ли что-то в MarkLogic, которое приводит к другому подходу к поиску, чтению и написанию фрагментов XML?)
  2. Должен ли я обрабатывать XML самостоятельно, используя один из API-интерфейсов XML, или есть более простой способ?
  3. Стоит ли использовать для этого JAXB?

Кто-то задал хороший вопрос, почему я использую Java. Я использую Java / Java EE , потому что я самый сильный в этом языке. Это проект с одним человеком, и я не хочу зацикливаться. Проект заключается в разработке API веб-сервисов и функциональности обработки и преобразования данных (CSV в XML). Java / Java EE может делать это хорошо и делать это элегантно.

Ответы [ 5 ]

3 голосов
/ 06 октября 2011

Примечание: Я - EclipseLink JAXB (MOXy) , и член JAXB 2 (JSR-222) экспертная группа.

Влияет ли использование MarkLogic на стек технологий XML?(т.е. есть ли что-то в MarkLogic, которое приводит к другому подходу к поиску, чтению и записи фрагментов XML?)

Потенциально.Некоторые библиотеки объектов в XML поддерживают большее разнообразие документов, чем другие.MOXy использует сопоставления на основе XPath, что позволяет обрабатывать более широкий спектр документов.Ниже приведены некоторые примеры:

Должен ли я сам обрабатывать XML с помощью одного из API-интерфейсов XMLили есть более простой способ?

Использование каркаса, как правило, проще.Java SE предлагает стандартные библиотеки для обработки XML: JAXB ( javax.xml.bind ), XPath ( javax.xml.xpath ), DOM, SAX, StAX.Поскольку в этих стандартах есть и другие реализации (например, MOXy и Apache JaxMe реализуют JAXB).

Стоит ли использовать для этого JAXB?

Да.

2 голосов
/ 06 октября 2011

Существует несколько библиотек XML-> Java для маршалинга объектов. Я думаю, что вы, возможно, захотите найти ответ на этот вопрос, выполнив поиск общих вопросов по маршаллингу / демаршаллингу Java XML, как этот:

Java Binding Vs Определение классов вручную

Ваш вариант использования по-прежнему не совсем понятен, хотя редактирование заголовка помогает. Если вы ищете возможность подключения к Java, вам также может понадобиться http://developer.marklogic.com/code/mljam, который позволяет выполнять код Java из MarkLogic XQuery. ,

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

Используя JAXB для демонтажа xml, обслуживаемого из XQuery в течение 5 лет, я должен сказать, что я нашел его исключительно полезным и экономящим время. Что касается сложности, то ее легко изучить и использовать, вероятно, на 90% того, для чего вы будете ее использовать. Я использовал его как для простых, так и для сложных схем и нашел его очень эффективным и экономящим время. Выполнение кода Java изнутри MarkLogic, как правило, не является начальным, поскольку он запускается в отдельной виртуальной машине на сервере Marklogic, поэтому он действительно не может использовать любое состояние сеанса или библиотеки, скажем, из веб-приложения Java EE. С JAXB очень легко взять поток результатов и преобразовать его в объекты Java. Я действительно не могу сказать достаточно хороших слов об этом. Это сделало мои усилия по разработке бесконечно проще и позволяет вам использовать Java для тех вещей, которые он делает лучше всего (богатая интеграция с различными технологиями и платформами, продвинутая бизнес-логика, быстрое управление памятью для тяжелых задач обработки и т. Д.), Все еще используя XQuery для что он делает лучше всего (например, поиск и преобразование контента).

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

XQSync использует для этого XStream . Насколько я понимаю, JAXB более мощный - но и более сложный.

0 голосов
/ 06 октября 2011

Влияет ли использование MarkLogic на стек технологий XML?

Нет. К тому времени, когда он выйдет из MarkLogic, это будет просто XML, который может прийти откуда угодно.

Мне нужно запросить XML и преобразовать его в объекты Java.

Почему?

Если у вас есть веская причина для использования Java, нам нужно знать, что это за причина, прежде чем мы расскажем вам, какая технология Java подходит.

Если у вас нет веских причин для использования Java, то лучше использовать язык обработки XML высокого уровня, такой как XSLT или XQuery.

Что касается JAXB, то это целесообразно, когда ваша схема достаточно проста и стабильна. Если схема сложная (например, схема для статей в академическом журнале), то JAXB может быть безнадежно громоздким из-за количества генерируемых классов. Одна из проблем, связанных с использованием его для обработки вывода XQuery, заключается в том, что весьма вероятно, что вывод XQuery не будет соответствовать какой-либо известной схеме, и структура результатов XQuery будет отличаться для каждого записываемого запроса.

...