我试图解析包含西里尔字母的XML文件,并收到Parse错误:"意外的数据结束"
这是我用来解析的代码,以及我输入的catch语句。
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>
有人可以帮助我,因为我在互联网上找不到任何有用的信息。
提前致谢。
答案 0 :(得分:0)
我不熟悉rapidxml,但快速搜索显示它默认处理utf8输入。所以,你的问题可能不是西里尔字母。我会专注于数据的意外结束&#39;请注意并确认XML feed遵守严格的XML规则。试试这些工具:
http://www.xmlvalidation.com/
http://www.utilities-online.info/xsdvalidation/#.WSgPG2iGOUk
如果您的XML有效,我很抱歉,我没有其他线索可以帮助您。
祝你好运!