0

我有一个应用程序将一个 (BSTR* ProfileXml) 作为输出参数传递。所以我在使用 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 将其写入参数缓冲区是节点。

任何帮助将不胜感激

谢谢

4

1 回答 1

1

你是对的,你不能在 XML 1.0 中使用控制字符。请参阅有效范围的规范。XML 1.1 增加了对这些控制字符的支持,但我认为 MSXML 不支持 XML 1.1。

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

于 2012-03-14T20:34:44.240 回答