java - 双重转义 XML 实体

标签 java xml soap

我有一个 XML 片段,例如:

<root>
  <node>This &amp; that</node>
</root>

这需要通过 SOAP 作为字符串发送,我们的框架将其转义为:

&lt;root>&lt;node>This &amp;amp; that&lt;/node>&lt;/root>

最终用户告诉我们这无法解析,并且我们的单元测试(正确地)没有转义它。生成的 XML 片段应符合 - &lt;node>This &amp;amp; that&lt;/node>传输结果应为 <node>This &amp; that</node>未转义时发送到渲染层,对吗?

最佳答案

您的分析看来是正确的。根据现有的证据,我可以得出结论,您的最终用户的软件没有正确处理数据,例如从 SOAP 消息(而不是 SOAP 消息的文本内容)中提取 XML 文本(未转义,如果您明白我的意思的话)。文档)并尝试解析它,或者在某个阶段使用 XML 解析器以外的其他东西。

也许您可以确保您和他们的系统正确处理例如纯文本,例如 In order to write a literal "&" in XML, HTML, or SGML text one writes "&amp;" instead .

(我对您将单元测试描述为“双重转义”文本感到有点担心,因为这暗示了思考问题的危险方式。如果您“转义”字符串 &lt;root>&lt;node>This &amp;amp; that&lt;/node>&lt;/root> 两次,结果是要么是错误,要么是字符串 <root><node>This & that</node></root>,它既不是格式良好的 XML,也不是您可能想要的任何其他内容。)

关于java - 双重转义 XML 实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9493932/

相关文章:

java - 如何使用 JNA 从 Java 将 int 作为 C++ 函数参数传递

java - 删除字符串中的重复项并创建新字符串

c# - 如何从 C# 中的 ListView 写入 XML 文件

Java SSL 握手错误 - Tomcat keystore

java - 如何消除 Java 警告 : input or output annotation?

xml - 同名、不同类型的多个元素出现在模型组中

php - 解析和操作 XML 文件(大小至少为 1000 MB 或以上)的最佳实践

java - Apache Camel xpath 条件路由

python - 使用 SUDS 将多个参数传递给 SOAP web 服务

soap - TR-069 cwmp客户端实现: open sources comparison