XML 1.0 中的转义控制字符

Escape control characters in XML 1.0

我理解 why control characters are illegal in XML 1.0,但我仍然需要以某种方式将它们存储在 XML 有效载荷中,我找不到任何关于转义它们的建议。我无法升级到 XML 1.1.

我应该如何逃脱 e.g. SOH character\u0001 - FIX 消息的标准分隔符)?

以下无效:

<data>&#x01;</data>

一种方法是使用处理指令:<?hex 01?>。但这只适用于元素内容,不适用于属性。当然,接收应用程序需要理解处理指令。

您也可以使用元素:<hex value="01"/> 但元素在 XSD 模式或 DTD 中可见,而处理指令是隐藏的。

另一种方法是,如果一个payload可以包含这样的字符,则将整个payload进行Base64编码。

在 logging/printing 的 FIX 消息中,将 SOH 替换为另一个字符(如“|”)是很常见的。你能在这里做同样的事情吗?

我的公司最终在 XML 之前添加了我们自己的标记:{1}。 您还必须将 { 和 } 大括号转义为 {123} 和 {125}。 阅读 XML 时,您必须自己解析嵌入代码。