我必须用C ++读取XML文件,我们正在使用XMLLite
我遇到的问题是我的XML的第一行指定了编码
<?xml version="1.0" encoding="ISO-8859-15"?>
当我尝试使用XMLLite解析文件时,我收到错误MX_E_ENCODINGSIGNATURE
。如果我删除编码部分,XML解析就好了。
<?xml version="1.0"?>
因此可以通过编程方式告诉XMLLite忽略编码resp。我还有其他选择吗?
一种解决方案是编写我自己的输入流类并抑制此标题,并注入短版本,但拥有一个干净的解决方案会更好。
答案 0 :(得分:0)
尽管文档说XMLLite无法处理不同的编码,但似乎可以使用IMultiLanguage2
来解决这个问题,文档中提到了#include <mlang.h>
XMLLiteReader::XMLLiteReader(void)
{
mLanguage = NULL;
mXMLLiteReader = NULL;
mCOMInitialized = false;
HRESULT hr;
if(CoInitialize(NULL) != S_OK)
return;
mCOMInitialized = true;
if((hr = CoCreateInstance(CLSID_CMultiLanguage, NULL, CLSCTX_ALL, IID_IMultiLanguage2, (void **)&mLanguage)) != S_OK)
return;
hr = CreateXmlReader(__uuidof(IXmlReader), (void**) &mXMLLiteReader, NULL);
if(hr != S_OK)
{
mXMLLiteReader = NULL;
return;
}
hr = mXMLLiteReader->SetProperty(XmlReaderProperty_MultiLanguage, (LONG_PTR)mLanguage);
}
,但没有给出示例。
以下是如何启用它:
UUID