我有一个应用程序传递一个(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),它与paramater值一起工作正常。 一旦我发送STX或ETX中的任何一个应用程序发送错误并要求有效的xml缓冲区,我使用IXMLDOMElement方法加载配置文件缓冲区和修改缓冲区并再次保存缓冲区。 我没有提到Profile字符串缓冲区中的编码默认为utf - 8。
所以我在这里做错了或者我们不能在xml中使用STX / ETX ??? MSMXL解析器无法解析它们。或者他们某种方式/ API将其写入param缓冲区是节点。
任何帮助都会非常感激
谢谢
答案 0 :(得分:1)
你说得对,you can't use control characters in XML 1.0。请参阅valid range的规范。 XML 1.1增加了对这些控制字符的支持,但我不认为MSXML支持XML 1.1。
作为一种解决方法,您可以实现某种转义方案,然后在另一端解码它。