如何将STX/ETX(C0控制代码)写入BSTR缓冲区IXMLDOMElement*

How to write the STX / ETX ( C0 control code) into the BSTR buffer IXMLDOMElement*

本文关键字:写入 代码 BSTR 缓冲区 IXMLDOMElement 控制 C0 STX ETX      更新时间:2023-10-16

我有一个应用程序,它正在传递一个(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代码2 ETX ascii代码3)。一旦我向STX或ETX发送应用程序发送错误并请求有效的xml缓冲区,我就会使用IXMLDOMElement方法加载配置文件缓冲区、修改缓冲区并再次保存缓冲区。我还没有提到配置文件中的编码字符串缓冲区默认为utf-8。

所以我在这里做错了一些事情,或者我们不能在xml中使用STX/ETX???MSMXL解析器无法解析它们。或者他们以某种方式/API在那里将其写入到参数缓冲区是节点。

任何帮助都将非常感谢

感谢

您是对的,您不能在XML1.0中使用控制字符。有关有效范围,请参阅规范。XML1.1增加了对这些控制字符的支持,但我认为MSXML不支持XML1.1。

作为一种变通方法,您可以实现某种转义方案,然后在另一端对其进行解码。