Лучший способ получить XML из набора результатов JDBC - PullRequest
4 голосов
/ 08 января 2009

Я ищу лучший подход к получению XML-документа из набора результатов JDBC. Структура XML не очень важна, но она должна быть достаточно быстрой.

Для пояснения я хотел бы получить данные из набора результатов и только метаданные, достаточные для идентификации данных (по сути, имен полей). В данный момент я работаю с MySQL, DB2, SQL Server, но решение должно быть независимым от базы данных (для XML в SQL Server это нереально).

Ответы [ 3 ]

2 голосов
/ 26 мая 2011

Используя WebRowSet, можно один раз преобразовать весь ResultSet в XML. XML, сгенерированный WebRowSet, очень прост и понятен, я не уверен насчет скорости, так как он также зависит от реализации драйвера.

Вот хорошая статья о WebRowSet с использованием Oracle , которая, я думаю, удовлетворит ваши потребности.

1 голос
/ 11 января 2009

Я согласен с первым респондентом, что вы можете получить очень хорошее представление в формате XML, читаемое человеком и компьютером, просто написав небольшой код.

Я применил этот же подход еще в 2002 году для создания бизнес-объекта промежуточного программного обеспечения для инструмента создания отчетов XML / PDF / HTML / XHTML / XLS. Программирование бизнес-объекта в XML-конвертере заняло всего несколько часов. Я воспользовался тем, что объекты не были самоссылочными. В противном случае мне пришлось бы добавить элементы ссылки (ов), а не просто сгладить значения.

Существует также метод WebRowSet , если вы используете Java 5 или более позднюю версию. Я не могу сказать, что его вывод выглядит супер привлекательным для потребления напрямую XSLT, но он все еще пригоден для использования. Гораздо более приемлемый, чем типичный выход JAXB.

Тем не менее, теперь есть более крутой подход, если вы используете Java 6 или новее.

Если вы используете JDBC 4, вы можете указать набор данных с параметром универсального типа, идентифицирующим класс, и JDBC заполнит поля этого класса данными. Это первая половина хитрости. См. Аннотации JDBC для получения более подробной информации

Вторая половина хитрости заключается в использовании XStream для преобразования их коллекции в XML. XStream обычно дает хороший результат с первого раза.

Вы можете сделать сгенерированный XML действительно чистым, читаемым, кратким (то есть "плотным"), предоставив XStream некоторые псевдонимы для использования. И если это не сработает, есть множество других способов отладки вывода .

1 голос
/ 08 января 2009

Вы хотите преобразовать таблицу ResultSet в XML? Я не знаю ни одного стороннего инструмента, но не очень сложно свернуть один из них.

Ваши два варианта должны иметь постоянный формат:

<ResultSet>
  <MetaData>
    <Column name="...." type="..."/>
    ....
  <MetaData>
  <Data>
    <Row><Cell value="valueConvertedToString"/><Cell null="true"/></Row>
    ....
  </Data>
</ResultSet>

Или специфичные для метаданных:

<ResultSet>
  <MetaData>
    <Column name="id" type="int"/>
    <Column name="color" type="string"/>
    ....
  <MetaData>
  <Data>
    <Row><id value="45"/><color null="true"/></Row>
    ....
  </Data>
</ResultSet>

Во втором случае вы не можете определить схему статически.

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