Как записать STX / ETX (управляющий код C0) в буфер BSTR IXMLDOMElement * - PullRequest
0 голосов
/ 15 марта 2012

У меня есть одно приложение, которое передает одно (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 Ответ

1 голос
/ 15 марта 2012

Вы правы, вы не можете использовать управляющие символы в XML 1.0 .См. Спецификацию для допустимого диапазона .В XML 1.1 добавлена ​​поддержка этих управляющих символов, но я не думаю, что MSXML поддерживает XML 1.1.

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

...