Как обрабатывать символы строковых данных, которые недопустимы в XML? - PullRequest
0 голосов
/ 13 ноября 2018

Рассмотрим этот веб-сервис, реализованный в Java:

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

При использовании (версии 2.5.10 и 2.7.18) Apache CXF это вернет (конверт SOAP опущен):

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

Какой недопустимый XML.

По-разному ли другие библиотеки веб-служб обрабатывают NULL (и другие символы, которые недопустимы в XML)? Какая правильная стандартная обработка?

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Стандартные способы обработки содержимого XML, которые могут быть недопустимыми в XML, - это использование CDATA разделов или значений, закодированных в base64 (предпочтительно с base64Binary типом данных).

0 голосов
/ 13 ноября 2018

В идеале должен быть какой-то механизм XML для всего, что должен делать управляющий символ.

Если это невозможно или вам по какой-то причине нужно отправлять не-символы (почти всегда это признак очень плохой идеи, но вам, возможно, придется столкнуться с чужой плохой идеей), тогда лучше отправлять как в кодировке base-64 или каким-либо другим способом оборачивания нетекстовых данных в текст.

...