我试图从C++生成一个C++服务来从一个MSMQ消息加载一个XML文档。我无法真正改变C++的某些方面,因为我试图把测试消息注入队列中。C++服务使用以下加载XML。
CComPtr<IXMLDOMDocument2> spDOM;
CComPtr<IXMLDOMNode> spNode;
CComBSTR bstrVal;
if(_FAILED(hr = spDOM.CoCreateInstance(CLSID_DOMDocument30)))
{
g_infoLog->LogCOMError(hr, "CWorker::ProcessBody() Can't Create DOM");
pWork->m_nFailure = WORKFAIL_BADXML;
goto Exit;
}
hr = spDOM->loadXML(bstrBody, &vbResult);
// open the queue
var mq = new MessageQueue(destinationQueue)
{
// store message on disk at all intermediaries
DefaultPropertiesToSend = { Recoverable = true },
// set the formatter to Binary, default is XML
Formatter = new BinaryMessageFormatter()
};
// send message
mq.Send(messageContent, "TestMessage");
mq.Close();
我尝试使用BinaryMessageFormatter发送相同的消息,但它在XML启动之前将我认为是unicode字符的内容放在顶部。
.......
......)
如果使用默认的XML格式化程序,则消息具有以下顶部元素。C++服务似乎无法处理这个问题。
<?xml version="1 .0"?>..<string>& lt;