【问题标题】:Amperand (&) in CDATA breaking XML POST RequestCDATA 中的与号 (&) 破坏 XML POST 请求
【发布时间】:2012-01-23 21:43:19
【问题描述】:

我正在发送一个在 CDATA 中带有“&”的 xml 请求

<![CDATA[red & blue]]>

它通过在 &amp;amp; 所在的位置结束来破坏我的 XML。任何想法如何避免这种情况?我也试过&amp;amp;,但它仍然在同一个位置中断。

这里是使用 curl 请求和输出结果的链接

http://pastebin.com/8Nh3d5Ty

服务器正在运行 codeigniter

【问题讨论】:

  • 请发布 XML。您所描述的不应发生,因为 CDATA 部分中的文本不需要转义。
  • 还告诉我们什么是“仍然中断”。您正在使用什么软件,遇到了什么错误。请阅读stackoverflow.com/questions/how-to-ask。如果您不遵循这些建议,您的问题将被关闭。
  • 这是我的请求和输出pastebin.com/8Nh3d5Ty。我正在使用 curl 发出请求,并且服务器在 codeigniter 上运行

标签: xml cdata


【解决方案1】:

“打破”是什么意思?您需要更具体地了解自己在做什么以及出了什么问题。

如果您使用的是 SAX 解析器,请注意 SAX 可以将文本节点分解为多个片段并一次传送一个片段。它可以在任何地方破坏节点,但 SAX 解析器在对解析器很重要的字符处破坏它们并不少见,例如 '&'。

我现在查看了您的 pastebin 消息(很难在白色上看到黄色...)。我不熟悉您使用的工具,但它们似乎严重损坏。它实际上没有识别 CDATA 部分,而是将其序列化为"&amp;lt;![CDATA[",这显然是错误的。如果它不能识别 CDATA,那么它可能会将 & 符号视为开始实体引用,所以在那之后,所有的赌注都被取消了。

【讨论】:

  • 嗨迈克尔,我使用的工具是 curl 发送请求。我已经解决了问题,因为curl.haxx.se/mail/archive-2001-08/0139.html curl 将“<![CDATA [”更改为“<”。这是一个 curl 问题,不处理数据字符串中的特殊字符。感谢大家的时间和回复。
猜你喜欢
  • 1970-01-01
  • 2014-03-02
  • 2011-12-08
  • 2018-03-16
  • 2019-05-15
  • 1970-01-01
  • 2020-12-04
  • 2013-11-11
  • 2017-10-03
相关资源
最近更新 更多