Как записать STX / ETX (управляющий код C0) в буфер BSTR IXMLDOMElement*
У меня есть одно приложение, которое передает одно (BSTR* ProfileXml) в качестве параметра out. Итак, я отправляю профиль после его выделения с помощью SysAllocString(Profile)
WCHAR Profile[] =
L"<IhvSecurity xmlns=\"http://www.sampleihv.com/nwifi/profile\">"
L"<IHVSecurityParam2>parameter value</IHVSecurityParam2>"
L"</IhvSecurity>";
Он отлично работает со значениями параметров для почти всех символов ascii (за исключением кодов C0, таких как STX ascii code 2, ETX ascii code 3). Как только я отправляю STX или ETX то приложение, которое отправляет ошибку и запрашивает допустимый буфер xml, я использую метод IXMLDOMElement для загрузки буфера профиля, модифицирующего буфера и повторного сохранения буфера. Я не упомянул кодировку в буфере строки профиля. По умолчанию это utf - 8.
Так что я делаю что-то не так, или мы не можем использовать STX / ETX в XML??? Синтаксический анализатор MSMXL не может их проанализировать. Или они каким-то образом / API для записи в буфер параметров является узел.
Любая помощь будет по достоинству оценена
Спасибо
1 ответ
Вы правы, вы не можете использовать управляющие символы в XML 1.0. Смотрите спецификацию для действительного диапазона. В XML 1.1 добавлена поддержка этих управляющих символов, но я не думаю, что MSXML поддерживает XML 1.1.
В качестве обходного пути вы могли бы реализовать некую схему экранирования и затем декодировать ее на другом конце.