Как я могу в целом отобразить результаты запроса в сгенерированный XML? - PullRequest
0 голосов
/ 11 февраля 2011

Это запрос:

Select id, title, value, old_title, old_value, new_title, new_value FROM VALUES

Это XML:

<row>
  <id>
  <title>
  <value>
  <old_state>
    <title>
    <value>
  </old_state>
  <new_state>
    <title>
    <value>
  </new_state>
<row>

Способ, которым я делаю это для существующего XML, заключается в том, что у меня нет new_state / old_state, поэтому я могу просто использовать результат, например. String colName = meta.getColumnLabel(i + 1); и нет необходимости сопоставлять old_title с title. Теперь у меня есть единственное, что приходит на ум, это сделать карту, в которой ключом будет значение счетчика, а значением будет имя нового элемента, например

boolean columnNameIsStartElement = (columStartNames.get(i) != null)?true=false;
boolean columnNameIsEndElement = (columEndNames.get(i) != null)?true=false;
if (columnNameIsStartElement ){
  writer.writeStartElement(columStartNames.get(i))
} else if (columnNameIsEndElement){
  writer.writeEndElement(columStartNames.get(i))
}
//continue processing the element as usual

Но мне это не нравится. Я бы предпочел использовать XSD как-то так, чтобы решение было более общим и не требовало от меня подсчета строк элементов, чтобы я мог правильно отобразить их (не говоря уже о проблемах, с которыми я столкнусь, если дочерний элемент дополнительный ребенок, как я мог отобразить это? :))

Ответы [ 2 ]

0 голосов
/ 11 февраля 2011

Вы можете использовать Castor, чтобы связать результат запроса в XML.Посмотрите на этот пример: http://www.castor.org/jdo.html#Using-JDO-And-XML

0 голосов
/ 11 февраля 2011

Взгляните на XStream , он позволяет легко выполнять сопоставления такого типа.


Редактировать: Хорошо, так что если вы очень строги в формате вывода, ивам не нужны промежуточные объекты, тогда вы можете рассмотреть возможность использования Velocity.Вам просто нужно написать небольшой шаблон из вашего примера вывода и вызвать скорость, передав ему ResultSet в его контексте.

...