char* XmlBook::CstrTochar(CString Cstr)
{
char* result;
wchar_t* tmp;
_tcscpy(tmp, Cstr);
int nLen = wcslen(tmp) + 1;
WideCharToMultiByte(CP_ACP, 0, tmp, nLen, result, 2 * nLen, NULL, NULL);
return result;
}TiXmlElement* XmlBook::AddOneNode(CString nodename, CString nodetext)
{
TiXmlElement* result = new TiXmlElement(CstrTochar(nodename));
TiXmlText* text = new TiXmlText(CstrTochar(nodetext));
result->LinkEndChild(text);
return result;
}void XmlBook::SaveToFile(Book pBook, CString route)
{
for(int i = 0; i != pBook.bVec.size(); i++)
{
TiXmlElement* gNode = new TiXmlElement(CstrTochar(pBook.bVec[i].groupname));
for(int j = 0; j != pBook.bVec[i].gVec.size(); j++)
{
TiXmlElement* name = new TiXmlElement(CstrTochar(pBook.bVec[i].gVec[j].name));
TiXmlElement* sex = AddOneNode("sex", pBook.bVec[i].gVec[j].sex);
TiXmlElement* work = AddOneNode("work", pBook.bVec[i].gVec[j].work);
TiXmlElement* comphone = AddOneNode("comphone", pBook.bVec[i].gVec[j].comphone);
TiXmlElement* mobilephone = AddOneNode("mobilephone", pBook.bVec[i].gVec[j].mobilephone);
TiXmlElement* homephone = AddOneNode("homephone", pBook.bVec[i].gVec[j].homephone);
TiXmlElement* company = AddOneNode("company", pBook.bVec[i].gVec[j].company);
TiXmlElement* email = AddOneNode("email", pBook.bVec[i].gVec[j].email);
TiXmlElement* page = AddOneNode("page", pBook.bVec[i].gVec[j].page);
TiXmlElement* address = AddOneNode("address", pBook.bVec[i].gVec[j].address);
TiXmlElement* zipcode = AddOneNode("zipcode", pBook.bVec[i].gVec[j].zipcode);
TiXmlElement* info = AddOneNode("info", pBook.bVec[i].gVec[j].info);
name->LinkEndChild(sex);
name->LinkEndChild(work);
name->LinkEndChild(comphone);
name->LinkEndChild(mobilephone);
name->LinkEndChild(homephone);
name->LinkEndChild(company);
name->LinkEndChild(email);
name->LinkEndChild(page);
name->LinkEndChild(address);
name->LinkEndChild(zipcode);
name->LinkEndChild(info);
gNode->LinkEndChild(name);
}
xDoc->LinkEndChild(gNode);
}
xDoc->SaveFile(CstrTochar(route));
}我改成现在这样子 但是在保存目录下没有文件
然后我试着用 xDoc->SaveFile("text.xml")代替 结果文件里面都是单字符的
比如 应该显示abc的地方它只有a一个字符
{
char* result;
wchar_t* tmp;
_tcscpy(tmp, Cstr);
int nLen = wcslen(tmp) + 1;
WideCharToMultiByte(CP_ACP, 0, tmp, nLen, result, 2 * nLen, NULL, NULL);
return result;
}TiXmlElement* XmlBook::AddOneNode(CString nodename, CString nodetext)
{
TiXmlElement* result = new TiXmlElement(CstrTochar(nodename));
TiXmlText* text = new TiXmlText(CstrTochar(nodetext));
result->LinkEndChild(text);
return result;
}void XmlBook::SaveToFile(Book pBook, CString route)
{
for(int i = 0; i != pBook.bVec.size(); i++)
{
TiXmlElement* gNode = new TiXmlElement(CstrTochar(pBook.bVec[i].groupname));
for(int j = 0; j != pBook.bVec[i].gVec.size(); j++)
{
TiXmlElement* name = new TiXmlElement(CstrTochar(pBook.bVec[i].gVec[j].name));
TiXmlElement* sex = AddOneNode("sex", pBook.bVec[i].gVec[j].sex);
TiXmlElement* work = AddOneNode("work", pBook.bVec[i].gVec[j].work);
TiXmlElement* comphone = AddOneNode("comphone", pBook.bVec[i].gVec[j].comphone);
TiXmlElement* mobilephone = AddOneNode("mobilephone", pBook.bVec[i].gVec[j].mobilephone);
TiXmlElement* homephone = AddOneNode("homephone", pBook.bVec[i].gVec[j].homephone);
TiXmlElement* company = AddOneNode("company", pBook.bVec[i].gVec[j].company);
TiXmlElement* email = AddOneNode("email", pBook.bVec[i].gVec[j].email);
TiXmlElement* page = AddOneNode("page", pBook.bVec[i].gVec[j].page);
TiXmlElement* address = AddOneNode("address", pBook.bVec[i].gVec[j].address);
TiXmlElement* zipcode = AddOneNode("zipcode", pBook.bVec[i].gVec[j].zipcode);
TiXmlElement* info = AddOneNode("info", pBook.bVec[i].gVec[j].info);
name->LinkEndChild(sex);
name->LinkEndChild(work);
name->LinkEndChild(comphone);
name->LinkEndChild(mobilephone);
name->LinkEndChild(homephone);
name->LinkEndChild(company);
name->LinkEndChild(email);
name->LinkEndChild(page);
name->LinkEndChild(address);
name->LinkEndChild(zipcode);
name->LinkEndChild(info);
gNode->LinkEndChild(name);
}
xDoc->LinkEndChild(gNode);
}
xDoc->SaveFile(CstrTochar(route));
}我改成现在这样子 但是在保存目录下没有文件
然后我试着用 xDoc->SaveFile("text.xml")代替 结果文件里面都是单字符的
比如 应该显示abc的地方它只有a一个字符
解决方案 »
- CHotkeyCtrl设置热键的问题.
- 文件对话框显示后导致sqlite无法访问。
- 转让孙鑫老师的VC++光盘教程
- 表示一个300-500个item的二层tree视图,list和tree哪个效率更高?
- MSXML2错误,没有创建实例成功。什么原因,谢谢
- 请教,我得到了文档模板的指针,如何再得到和他关联的视图类指针
- 哪里有《深入浅出MFC》简体中文电子版?
- 我在对话框中建了个新按钮,但按下新按钮后我不知发了什么新消息,请各位大虾帮邦忙?在线等待
- 如何在Dlg上添加一个ComboBoxEx?? Controls上面只有ComboBox
- CSDN史无前例的超COOL问题!
- VC中多文件间的函数调用问题
- 关于网络语音通信发声的问题
CstrTochar改成一下
char* XmlBook::CstrTochar(CString Cstr)
{
wchar_t* tmp;
_tcscpy(tmp, Cstr);
DWORD dwSize = WideCharToMultiByte(CP_OEMCP, NULL, tmp, -1, NULL, 0, NULL, FALSE);
char* result = new char[dwSize];
WideCharToMultiByte(CP_OEMCP, NULL, tmp, -1, result, dwSize, NULL, FALSE);
return result;
}
测试通过现在还不能关贴 要分的速度进来