如何处理在XML中非法的字符串数据字符?

5
考虑这个用Java实现的网络服务:
@WebMethod(operationName = "test1")
@WebResult(name = "test1", targetNamespace = "http://test.example.org/")
public String test1()
{
    return "foo\u0000bar"; // "foo" + NUL + "bar"
}

使用 Apache CXF(版本为 2.5.10 和 2.7.18),此操作将返回 SOAP 包裹(省略)。
<ns2:test1>foo[NULL byte here]bar</ns2:test1>

这是无效的XML。

其他Web服务库是否以不同方式处理NULL(和其他在XML中无效的字符)?正确的标准处理方式是什么?

2个回答

1
理想情况是对于任何控制字符都有一些 XML 机制来完成其功能。
如果不可能,或者由于某种原因需要发送非字符(几乎总是一个很糟糕的想法的标志,但您可能需要处理其他人的糟糕想法),那么最好将其作为 Base64 编码或其他将非文本数据包装在文本中的方式进行发送。

0

处理XML内容中可能无效的标准方法是使用CDATA部分或base64编码值(最好使用base64Binary数据类型)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接