Самый простой парсер в Java для xml для генерации кода для новичка в xml - PullRequest
1 голос
/ 07 августа 2010

Ребята, я новичок в XML в Java.

У меня есть следующая задача.Мне нужно проанализировать некоторые XML-файлы (в частности, hccb-proto [X11]), чтобы сгенерировать эквивалентный протокол запроса в Java.Уже есть четко определенный xsd и соответствующий xml для протокола.Каков наилучший и самый простой подход / анализатор для решения этой проблемы?

Пример существующего содержимого XML:

  <request name="SetScreenSaver" opcode="107">
    <pad bytes="1" />
    <field type="INT16" name="timeout" />
    <field type="INT16" name="interval" />
    <field type="CARD8" name="prefer_blanking" enum="Blanking" />
    <field type="CARD8" name="allow_exposures" enum="Exposures" />
  </request>

Это создаст объект Java DOM (?).И им с этим мне нужно сгенерировать данный код в Java.Для этого случая:

Желаемый результат:

public void setScreenSaver(int timeout, int interval, int preferBlanking, int allowExposures) {
    RequestOutputStream o = outputStream;
    synchronized (o) {
        o.beginRequest(107, 0, 1); // Major Opcode , Minor Opcode, ReqLength
        o.writeInt16(timeout);
        o.writeInt16(interval);
        o.writeInt8(preferBlanking);
        o.writeInt8(allowExposures);
        o.send();
    }
}

Кажется, что XSOM - это тот, который дает более легкий подход ...

PS: я никогда не манипулировалXML-файлы на Java: 3

Ответы [ 2 ]

3 голосов
/ 07 августа 2010

Вы должны посмотреть в JAXB. Он поставляется с утилитой, которая сгенерирует весь ваш код Java, используя файл .XSD для определения структуры.

1 голос
/ 07 августа 2010

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

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

РЕДАКТИРОВАТЬ

Я могу вспомнить один обходной подход с использованием Eclipse / EMFчто может упростить вещи:

  1. Используйте инструмент EMF для создания модели EMF ECore из XSD.Это дает вам «объектную модель» в памяти, аналогичную простому UML.
  2. Используя инфраструктуру EMF (например, JET), создайте собственный генератор, который обходит модель ECore и генерирует целевой код.

XSD to ECore также предоставляет (бесплатно) сгенерированные классы для представления вашего XML в памяти, редактирования его в редакторе дерева и чтения / записи XML.Связанные технологии имеют дело с постоянством в базе данных, проверкой, преобразованием модели в модель и другими вещами.

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