我試圖解析其中包含西裏爾字母XML文件,我收到解析錯誤:Rapidxml從COM對象中讀取西里爾
這裏「數據的意外的結束」是,我用它來解析代碼,以及趕上我在進入聲明
rapidxml::xml_document<TCHAR> doc;
rapidxml::xml_node<TCHAR>* rootNode;
// Helping in the debug
// std::cout << nElementIndex << std::endl;
const int SIZE = 300;
LPWSTR indirectString = new wchar_t[SIZE];
TCHAR* temp = m_vecContainer[nElementIndex].xml.GetBuffer();
try
{
doc.parse<0>(&temp[0]);
}
catch (rapidxml::parse_error &e)
{
return ERROR_INVALID_FUNCTION;
}
這裏是可以返回xml.GetBuffer()方法的一個例子:
<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
<RegistrationInfo>
<Version>1.3.33.5</Version>
<Description>Поддържа актуален софтуера ви от Google. Ако тази задача е деактивирана или спряна, софтуерът ви от Google няма да е актуален, което означава, че ако в сигурността възникне уязвимост, тя няма да бъде коригирана и е възможно някои функции да не работят. Тази задача се деинсталира сама, когато няма софтуер от Google, който да я използва.</Description>
<URI>\GoogleUpdateTaskMachineCore</URI>
</RegistrationInfo>
...
</Task>
有人可以幫助我,因爲我無法找到的任何有用的信息 互聯網。
在此先感謝。
你用TCHAR = char或wchar_t來編譯嗎? RapidXML在UTF-8上正常工作,但你的傳球廣泛。如果它們是UTF-16,那麼它可能會起作用,但如果它們是別的東西,所有的投注都關閉。 (並且XML中的編碼屬性不相關!) – Roddy