在 XMPP 中交换自定义 XML 元素的最佳方式?

2024-04-13

我有一个 XMPP 应用程序,其中两个客户端进行交互 (1) 一个机器人编程Smack http://www.igniterealtime.org/projects/smack/(Scala/Java) 和 (2) 一个 GUI 聊天客户端strophe http://code.stanziq.com/strophe/(Javascript)。

应用程序需要交换自定义XML(例如,如下所示)

<myPacket>
   <response type='sensorData'>
      <temperature units='Kelvin'>
         234
      </temperature>
   </response>
</myPacket>

交换数据的最佳方式是什么?以下是我能想到的:

1) 编写自定义 XMPP 节

2) 将我的 XML 嵌入当前定义的节中(例如,在消息或 iq 中)

3)对于smack,use the Message.get(set)Property读取/写入自定义数据 http://www.igniterealtime.org/builds/smack/docs/latest/documentation/properties.html.

No. 3) 被排除,因为它要求两个客户端都理解 Java 对象并使用相同的库 (Smack)。

请指出解决同一问题的任何其他问题。

[编辑:] 经过一些研究,我发现 Dataforms (XEP-0004) 是最简单的方法,只要你的库支持它。


这很大程度上取决于数据的使用方式。我的经验法则是,如果我只传递键值对(简单数据),那么我会选择 Smack 中的属性功能。但属性功能只能在Message中使用。由于某种原因,属性扩展不使用 Smack 的提供者架构,而是硬编码到Packet and PacketParserUtils班级。因此,如果您无法在 IQ 或 Presence 数据包中重用它。

如果您打算使用键值对以外的任何内容,那么您应该为您的自定义节编写一个提供程序。这需要一些工作,但是一旦您实现了编组/解编组,那么您的自定义节几乎可以在 Smack 框架中的任何地方工作。见咂嘴提供者架构 http://www.igniterealtime.org/builds/smack/docs/latest/documentation/providers.html了解详情。

我在我的一篇博客中写了关于编写提供商的博客post http://oneminutedistraction.wordpress.com/2010/08/31/receiving-pep-broadcast-2/。这不是这篇文章的主要内容,但希望你发现它也有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 XMPP 中交换自定义 XML 元素的最佳方式? 的相关文章

  • PHP如何使用“ XML 中的实体与 DOMdocument

    我正在修改由其他库生成的 XML 文件的内容 我正在使用 PHP 5 3 10 进行一些 DOM 修改并重新插入替换节点 我正在使用的 XML 数据有 quot 在进行操作之前的元素 我想保留这些元素http www w3 org TR R
  • Visual Studio 2012 T4 模板生成 XML 时出现错误

    我正在使用 Visual Studio 2012 从 T4 模板生成 XML 模板的顶部看起来像 lt template language VBv4 hostspecific True debug True gt lt output ext
  • C#.net 中的 XML 数据库

    我正在为一些网站开发WPF客户端程序 它使用 XML 数据库 我是 XML 新手 请有人解释一下如何创建 附加 最重要 编辑 读取和加密 XML 文件 我知道这是一个大问题 但是 事情很紧急 必须尽快完成工作 在网上查了一下 没有得到正确的
  • 更改 Android XML 中的形状颜色

    我有 android 绘图 我将应用到几个 TextView 的背景
  • 反规范化 XSD

    我需要对 XML 模式进行非规范化 以便为将创建符合该模式的文档的人员生成文档 用户不了解 XSD 并且很可能永远不会学习 我见过的工具能够为其他 XSD 开发人员生成文档 但我的用户对如何构建架构的细节不感兴趣 他们只想知道他们可以做什么
  • 就地修改 XML 文件?

    假设我有以下 XML 文件
  • 将文本视图添加到布局中?

    如果我的按钮不移动 我就无法在按钮上方放置文本视图 我该如何解决这个问题 被困在这个问题上 4 个小时了 这很伤心 因为我正在尝试在我的布局上添加一个文本视图 我的布局中心有 4 个按钮 我只想在四个按钮上方添加一个文本视图 如下所示 Te
  • XPath 获取没有父节点的所有子节点(元素、注释和文本)

    我需要一个 XPath 来获取所有没有父元素的子节点 包括文本元素 注释元素和子元素 任何帮助 示例示例
  • XPath - 测试是否至少有一个节点具有给定值

    给定以下 XML
  • XDocument.Save() 删除我的 实体

    我编写了一个工具来使用 C 和 Linq to XML 修复一些 XML 文件 即插入一些缺失的属性 值 该工具将现有 XML 文件加载到 XDocument 对象中 然后 它向下解析节点以插入丢失的数据 之后 它调用 XDocument
  • 从 OMElement 对象获取 InputStream/io.Reader

    我有一个OMElement对象 从中我想得到一个InputStream或读者对象 我想要的是流式传输xml来自OMElement我有 没有加载到内存中 我只能得到XMLStreamReader对此表示反对 但我找不到办法得到InputStr
  • 如何轻松调试布局 Xml 警告/错误?

    我陷入了这个错误 Warning simplexml load string Entity line 46 parser error Comment not terminated in lib Varien Simplexml Config
  • android:widgetLayout 和 android:layout 之间的区别?

    我得到一些奇怪的配置 其中 widgetLayout 配置列表项的内部空间 而布局配置整个项目列表和屏幕背景 有人能真正解释一下什么是 widgetLayout 吗 android layout 整个首选项的布局 包括标题 摘要和小部件 a
  • 如何将 Xml 文件转换为文本文件 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有大约 8000 个 xml 文件需要转换为文本文件 文本文件必须包含 xml 文件的标题 描述和关键字 不含标签 并删除其他元素和
  • jQuery - xpath 查找?

    如果您在 xml 中有下面的 xml 那么您会使用以下命令变得昏昏欲睡 xml find animal find dog find beagle text jQuery 中是否有类似的方法来使用 xpath xml xpathfind an
  • SQL Server 2008 XPath

    我们尝试根据我们提供的值过滤一组 XML 我们的数据库的 XML 字段中有以下 XML 如果传递数字 5052095050830 我们需要在 XML 中找到这个特定节点 我们提供的号码可能存在任意多次 任何机构都可以提供一些 SQL 示例来
  • 如何对xml进行排序?

    我有一个 XML 文件 如下所示
  • 在 PHP 中验证约 400MB 的大型 XML 文件

    我有一个很大的 XML 文件 大约 400MB 在开始处理之前我需要确保它的格式正确 我尝试的第一件事是类似于下面的内容 这很棒 因为我可以找出 XML 是否格式不正确以及 XML 的哪些部分 不好 doc simplexml load s
  • 使用 JAXB 编组 LocalDate

    我正在构建一系列链接类 我希望能够将其实例编组到 XML 以便我可以将它们保存到文件中并稍后再次读取它们 目前我使用以下代码作为测试用例 import javax xml bind annotation import javax xml b
  • 带属性的 XML 模式限制

    在XML Schema中 如何创建元素Age具有restriction允许在元素内部写入最大值为 10 最小值为 1 的整数Age还有元素Age有属性

随机推荐