Создание заглушек Java для службы / клиента DLNA? (или Что такое корневой тег <scpd>в файле XML?) - PullRequest
0 голосов
/ 11 ноября 2009

Глядя на спецификации для DLNA, большая часть обмена метаданными, похоже, основана на мыле. Однако я не могу найти ничего похожего на WSDL для различных сервисов. Вместо этого есть некоторый язык описания услуг, который выглядит следующим образом:

<scpd>
  <serviceStateTable>
    <stateVariable>
      <Optional />
      <name>TransferIDs</name>
      <sendEventsAttribute>yes</sendEventsAttribute>
      <dataType>string</dataType>
      ...
    </stateVariable>
  </serviceStateTable>
  <actionList>
    <action>
      <name>Browse</name>
      <argumentList>
        <argument>
          <name>ObjectID</name>
          <direction>in</direction>
          <relatedStateVariable>A_ARG_TYPE_ObjectID</relatedStateVariable>
        </argument>
        ...
      </argumentList>
    </action>
    ...
  </actionList>
</scpd>

Я не могу найти никакой документации по этому формату или каких-либо инструментов для создания заглушек сервера или клиента для него, как я могу с WSDL. На данный момент мои параметры кажутся

  1. Создайте XSLT, чтобы попытаться преобразовать язык дескриптора в wsdl
  2. Напишите инструменты генерации кода Java, которые работают на существующем языке дескрипторов
  3. Пишем заглушки и код для сериализации / десериализации сообщений мыла вручную

Все три варианта кажутся в равной степени непривлекательными, хотя первый вариант кажется наименьшей работой, но это не говорит о многом. Любые предложения для лучшего решения проблемы?

Ответы [ 2 ]

0 голосов
/ 01 декабря 2011

Если это помогает, ohNet использует аналогичный подход для создания класса для каждой услуги UPnP (по вашему выбору C ++, C #, Java, JavaScript или C), которая обрабатывает всю (де) сериализацию soap сообщения.

0 голосов
/ 08 июля 2010

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

...