【问题标题】:'"' instead of normal quotes ("") in returning XML from Jersey从 Jersey 返回 XML 时使用 '"' 而不是普通引号 ("")
【发布时间】:2012-04-19 12:33:03
【问题描述】:

我遇到了以下问题。我有一个使用 Jersey 的网络服务,它可以产生两种返回数据——XML 和 JSON。

@GET
@Produces({"application/xml","application/json"})

返回的数据还包含一个带引号的字符串"",如果返回的数据类型是 JSON,那么一切正常 - 返回带有普通引号 "" 的字符串,但如果返回的数据类型是 XML,而不是带有返回"

问题在于,在客户端字符串中应该有正常的"" 引号。请帮助解决这个问题。

预期的字符串示例:

{"key1":"value1","key2":"value2"}

【问题讨论】:

  • 为什么会出现这个问题? XML 解析器应将" 解释为引号字符。 Jersey 甚至可能在元素内容中编码所有它可以编码的东西,而不是只在属性内容中编码引号。 (或者只是为了确定或使代码更简单。)
  • 这不是问题。这是正确的 XML 行为,或者至少从您所说的 听起来 来说是正确的。也许您认为不正确的输出示例会有所帮助。
  • 我知道这是正确的行为,但在客户端正常字符串与正常 ("") 引号是预期的。所以这是个问题=(
  • 啊,错过了您的编辑。 “客户端的 XML 解析器是哑的,不能不哑”是一个重要的细节。

标签: java xml-serialization jaxb jersey


【解决方案1】:

你可能想看看:Can I force JAXB not to convert " into ", for example, when marshalling to XML?

(JAX-RS 使用 JAXB)。

我知道“和’可能会有问题,因为我看到一些旧的 XML 系统会做一些奇怪的事情(包括古老的 IE 7)。

【讨论】:

  • 感谢您的建议,但是对于使用球衣上下文的网络服务,我该如何使用该方法?
  • @VladimirSelin Jersey 实现了将 JAXB 用于 XML 的 JAX-RS(您应该知道)。
  • 我知道=)。问题是 - 如果你能告诉我我可以“告诉” Jersey 它应该使用哪个 JAXBFactory 的方式,就像在我的应用程序中一样。球衣自己做一切。提前致谢)
  • 你让我在这里随着时间的推移工作:)。大约一秒钟的谷歌搜索:stackoverflow.com/questions/7034673/…
  • 非常抱歉。谢谢=)
【解决方案2】:

XML 用于程序间通信。字符数据中的""含义相同。

您在尝试解析“返回的数据”的程序中是否遇到了一些问题?

【讨论】:

  • 是的,客户端需要正常的字符串和正常的引号。
  • @VladimirSelin 期望什么?客户端到底在运行什么,为什么它无法解析格式良好的 XML?你解决了错误的问题;实际的问题不是服务器端用" 替换引号(这为您提供了有效的XML),而是客户端未能处理这样的XML。这也可能暗示客户端存在一些更深层次的问题,例如各种注入的漏洞。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-29
  • 1970-01-01
  • 2021-08-04
  • 1970-01-01
  • 2015-12-12
  • 1970-01-01
相关资源
最近更新 更多