我理解why control characters are illegal in XML 1.0,但我仍然需要以某种方式将它们存储在XML有效负载中,我找不到任何关于转义它们的建议。我无法升级到XML 1.1。
我该如何逃避,例如SOH character(\u0001
- FIX消息的标准分隔符)?
以下不起作用:
<data></data>
答案 0 :(得分:2)
一种方法是使用处理说明:<?hex 01?>
。但这只适用于元素内容,而不适用于属性。当然,接收应用程序需要理解处理指令。
您还可以使用元素:<hex value="01"/>
但元素在XSD架构或DTD中可见,而处理指令则隐藏。
另一种方法是,如果一个有效负载可以包含这样的字符,那么将整个有效负载放在Base64编码中。
答案 1 :(得分:0)
在记录/打印FIX消息时,将SOH替换为“|”等其他字符是很常见的。你能在这里做同样的事吗?