DLNA サービス/クライアントの Java スタブを作成しますか?(または、XML ファイルの <scpd> ルート タグとは何ですか?)

StackOverflow https://stackoverflow.com/questions/1716740

質問

DLNA の仕様を見ると、メタデータ通信のほとんどは SOAP ベースであるようです。ただし、さまざまなサービスのいずれにも 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. SOAP メッセージを手動でシリアル化/逆シリアル化するためのスタブとコードを作成する

3 つのオプションはどれも同様に魅力的ではないように思えますが、最初のオプションは最も手間がかからないようですが、それほど大きな意味はありません。この問題をより適切に対処するための提案はありますか?

役に立ちましたか?

解決

私は最終的には手動でXMLを解析し、クライアントとサーバーのスタブを作成するためのコード生成ツールを使用します。

他のヒント

それが助け場合は、 ohNet には、UPnPサービスごとにクラスを作成するために、同様のアプローチを使用していますSOAPメッセージのすべて(デ)シリアライズを処理する(C ++、C#、Javaの、JavaScriptやCのお好みで)ます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top