Как записать 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.

В качестве обходного пути вы могли бы реализовать некую схему экранирования и затем декодировать ее на другом конце.

Другие вопросы по тегам