我有一个 XML 片段,例如:
<root>
<node>This & that</node>
</root>
这需要通过 SOAP 作为字符串发送,我们的框架将其转义为:
<root><node>This &amp; that</node></root>
最终用户告诉我们这无法解析,并且我们的单元测试(正确地)没有转义它。生成的 XML 片段应符合 - <node>This &amp; that</node>
传输结果应为 <node>This & that</node>
未转义时发送到渲染层,对吗?
最佳答案
您的分析看来是正确的。根据现有的证据,我可以得出结论,您的最终用户的软件没有正确处理数据,例如从 SOAP 消息(而不是 SOAP 消息的文本内容)中提取 XML 文本(未转义,如果您明白我的意思的话)。文档)并尝试解析它,或者在某个阶段使用 XML 解析器以外的其他东西。
也许您可以确保您和他们的系统正确处理例如纯文本,例如 In order to write a literal "&" in XML, HTML, or SGML text one writes "&" instead
.
(我对您将单元测试描述为“双重转义”文本感到有点担心,因为这暗示了思考问题的危险方式。如果您“转义”字符串 <root><node>This &amp; that</node></root>
两次,结果是要么是错误,要么是字符串 <root><node>This & that</node></root>
,它既不是格式良好的 XML,也不是您可能想要的任何其他内容。)
关于java - 双重转义 XML 实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9493932/