Xmpp 如何在smack 4.2.0中为没有命名空间的元素添加提供程序

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

我在谷歌上找不到任何关于这方面的信息,但我远非XMPP专家,所以答案可能是显而易见的。我想知道解析没有显式命名空间的自定义子元素的最佳方法。在本例中,我正在解析一些叮当元素,其中一些没有任何显式名称空间(例如,
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>