代码之家  ›  专栏  ›  技术社区  ›  David Balažic

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

  •  5
  • David Balažic  · 技术社区  · 6 年前

    考虑一下这个用Java实现的web服务:

    @WebMethod(operationName = "test1")
    @WebResult(name = "test1", targetNamespace = "http://test.example.org/")
    public String test1()
    {
        return "foo\u0000bar"; // "foo" + NUL + "bar"
    }
    

    <ns2:test1>foo[NULL byte here]bar</ns2:test1>
    

    它是无效的XML。

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

    2 回复  |  直到 6 年前
        1
  •  1
  •   Jon Hanna    6 年前

    理想的做法是使用一些XML机制来处理控制字符要执行的任何操作。

    如果这是不可能的,或者如果您出于某种原因需要发送非字符(几乎总是一个非常坏的想法的信号,但是您可能需要处理其他人的坏主意),那么最好以base-64编码或其他方式将非文本数据包装在文本中。

        2
  •  0
  •   apisim    6 年前

    CDATA 段或base64编码值(最好使用 base64Binary 数据类型)。