DLNA 서비스 / 클라이언트를위한 Java Stubs 생성? (또는 XML 파일의 루트 태그 란 무엇입니까?)
-
19-09-2019 - |
문제
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과 마찬가지로 서버 또는 클라이언트 스텁을 생성하는 도구를 찾을 수 없습니다. 이 시점에서 내 옵션이있는 것 같습니다
- 설명자 언어를 변환하려는 XSLT를 만듭니다. ~ 안으로 WSDL
- 기존 설명자 언어에서 작동하는 Java 코드 생성 도구 작성
- 수작업으로 비누 메시지를 직렬화/사제 화하려면 스터브 및 코드를 작성하십시오.
세 가지 옵션은 모두 똑같이 매력적이지 않은 것처럼 보이지만 첫 번째는 가장 적은 작업처럼 보이지만 그 말이 많지 않습니다. 문제를 더 잘 처리하기위한 제안이 있습니까?
해결책
궁극적으로 코드 생성 도구를 사용하여 XML을 수동으로 구문 분석하고 클라이언트 및 서버 스텁을 생성했습니다.
다른 팁
도움이되는 경우 오넷 비슷한 접근 방식을 사용하여 UPNP 서비스 당 클래스를 생성합니다 (C ++, C#, Java, JavaScript 또는 C)는 SOAP 메시지의 모든 (DE) 직렬화를 처리합니다.
제휴하지 않습니다 StackOverflow