TinyXml:从XML文件中读取wstring

时间:2012-10-15 13:39:12

标签: c++ xml sqlite unicode

再次unicode字符引起严重的头痛。这是我正在尝试做的事情: 1)我正在将Sqlite表(包括unicode字符)导出到xml文件(效果很好,unicode字符不会丢失) 2)尝试在编辑后再次导入这些XML表 - 工作正常,但unicode字符丢失。

这是读取xml文件的代码:

wstring input;
TiXmlElement* root = doc.FirstChildElement();
// count number of rows in xml file
TiXmlElement* counter = root->FirstChildElement();
int totalRows = 0;

while(counter != NULL) {
    totalRows += 1;
    counter = counter->NextSiblingElement();
}

// import data
wchar_t firstChar;
int check, length;
wstring finalInput;
TiXmlElement* rowElement = root->FirstChildElement();
for (int a = 1; a <= totalRows; a++) {
TiXmlElement* columnElement = rowElement->FirstChildElement();
// clear insert statement
insert = start;

for (int b = 1; b <= columns; b++) {
    node = columnElement->FirstChild();
    text = node->ToText();
    // !!! here we have the problem data gets imported as a string !!!
    input = text->Value(); 

问题是Value(); (来自tinyxml文件的函数)返回const char *而不是const wchar_t。我试图修改TinyXml文件以返回wchar_t,但这导致了一些令人讨厌的错误。

我现在的问题是:有人知道如何使用tinyxml从xml文件中读取数据而不会丢失unicode字符吗?

提前谢谢,您的帮助一如既往地非常感谢。

2 个答案:

答案 0 :(得分:2)

我有wx_t(或WCHAR)版本的tinyxml2库(我将其转换为我的项目)

http://pastebin.com/VrgNknaa 的.cpp

http://pastebin.com/NEy2jjM0 .H

答案 1 :(得分:0)

SQLite始终使用UTF-8,因此请确保您的XML文件在编辑时保持UTF-8编码。

要强制TinyXml将XML文件读取为UTF-8,请使用LoadFile(filename, TIXML_ENCODING_UTF8)