XMLLite忽略编码

时间:2015-10-14 12:26:07

标签: c++ xmllite

我必须用C ++读取XML文件,我们正在使用XMLLite我遇到的问题是我的XML的第一行指定了编码

<?xml version="1.0" encoding="ISO-8859-15"?>

当我尝试使用XMLLite解析文件时,我收到错误MX_E_ENCODINGSIGNATURE。如果我删除编码部分,XML解析就好了。

<?xml version="1.0"?>

因此可以通过编程方式告诉XMLLite忽略编码resp。我还有其他选择吗?

一种解决方案是编写我自己的输入流类并抑制此标题,并注入短版本,但拥有一个干净的解决方案会更好。

1 个答案:

答案 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