0

查看 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. 编写存根和代码来手动序列化/反序列化soap消息

所有三个选项似乎都同样不吸引人,尽管第一个似乎工作最少,并不是说太多。有什么建议可以更好地处理这个问题吗?

4

2 回答 2

0

我最终使用了一个代码生成工具来手动解析 XML 并创建客户端和服务器存根。

于 2010-07-07T22:21:58.190 回答
0

如果有帮助,ohNet使用类似的方法为每个 UPnP 服务创建一个类(在您选择的 C++、C#、Java、JavaScript 或 C 中),它处理所有(反)序列化的肥皂消息。

于 2011-12-01T17:07:15.383 回答