Xmpp 如何在smack 4.2.0中为没有命名空间的元素添加提供程序
我在谷歌上找不到任何关于这方面的信息,但我远非XMPP专家,所以答案可能是显而易见的。我想知道解析没有显式命名空间的自定义子元素的最佳方法。在本例中,我正在解析一些叮当元素,其中一些没有任何显式名称空间(例如,Xmpp 如何在smack 4.2.0中为没有命名空间的元素添加提供程序,xmpp,xml-namespaces,smack,jingle,Xmpp,Xml Namespaces,Smack,Jingle,我在谷歌上找不到任何关于这方面的信息,但我远非XMPP专家,所以答案可能是显而易见的。我想知道解析没有显式命名空间的自定义子元素的最佳方法。在本例中,我正在解析一些叮当元素,其中一些没有任何显式名称空间(例如,payload type,或parameter,它们没有显式声明名称空间,只是继承名称空间) 例如: <description maxptime="60" media="audio" xmlns="urn:xmpp:jingle:apps:rtp:1"> <paylo
payload type
,或parameter
,它们没有显式声明名称空间,只是继承名称空间)
例如:
<description maxptime="60" media="audio" xmlns="urn:xmpp:jingle:apps:rtp:1">
<payload-type name="opus" clockrate="48000" id="111" channels="2">
<parameter value="10" name="minptime" />
<parameter value="1" name="useinbandfec" />
</payload-type>
...
</description>
这里,参数将具有urn:xmpp:jingle:apps:rtp:ssma:0
namspace
向ProviderManager添加自定义提供程序时,需要传入显式命名空间,因此我不能只传入空字符串(ProviderManager.addExtensionProvider会显式检查)
一个选项是注册参数
提供者,例如,在每个可能的名称空间下注册,但这感觉不太好
另一种选择是高级提供程序(具有显式名称空间的提供程序)解析任何没有名称空间的嵌套子元素,而不是递归地获取适当的扩展提供程序并调用parse。不过,似乎向ProviderManager注册所有内容是更惯用的方式。这可能会使用某种提供程序管理器的内部版本,仅对名称起作用。因此,元素将首先在官方ProviderManager中查找匹配的任何内容,然后尝试其内部版本
有没有一种惯用的方法来实现这一点?也许我完全错过了什么
我确实看到了名称空间是预期的,但我没有看到任何名称空间在中列出。因此,也许我上面的一个想法是正确的,但我想知道哪一个最适合图书馆
谢谢
<source ssrc="1789460357" xmlns="urn:xmpp:jingle:apps:rtp:ssma:0">
<parameter value="mixed" name="cname" />
...
</source>