加载xml文件的问题?

ziyesky 2017-05-05 02:06:50
//load xml file     
CString tempFilePath = _T("D:\\WorksXml.xml");
char* filePath = WcharToChar(tempFilePath.GetBuffer());
TiXmlDocument* pXmlDoc = new TiXmlDocument();
bool result = pXmlDoc->LoadFile(filePath);
if (!result)
{
CString errStr = CString(pXmlDoc->ErrorDesc());
int rowID = pXmlDoc->ErrorRow();
}

很简单的一段代码,但bool result = pXmlDoc->LoadFile(filePath)一直返回false,用 CString(pXmlDoc->ErrorDesc())抓出来的错误是“Error document empty”。不知道什么加载不了xml文件。
xml文件本身也是测试版,极简单:
<?xml version="1.0" ?>
<Hello>World</Hello>
求坛里大牛帮忙看一下到底是什么问题,谢谢。

...全文
185 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ziyesky 2017-05-15
  • 打赏
  • 举报
回复
问题解决了,纠结了半天发现原来是编码格式的问题,有同类烦恼的朋友可借鉴,
赵4老师 2017-05-08
  • 打赏
  • 举报
回复
对电脑而言没有乱码,只有二进制字节;对人脑才有乱码。啊 GBK:0xB0 0xA1,Unicode-16 LE:0x4A 0x55,Unicode-16 BE:0x55 0x4A,UTF-8:0xE5 0x95 0x8A
ziyesky 2017-05-05
  • 打赏
  • 举报
回复
调用Parse时传入的参数为Parse( buf, 0, encoding );其中各参数的值如图,不知道buf是不是应该是这样的?
  • 打赏
  • 举报
回复
引用 2 楼 ziyesky 的回复:
[quote=引用 1 楼 yoyo18520 的回复:] 你设置断点调试下,很容易的。你可以先判断那个文件存不存在,再加载。
	CStringA strPath = "路径";
	TiXmlDocument doc(strPath);
	bool loadokay = doc.LoadFile();
	if (!loadokay)
	{
		std::string errStr = doc.ErrorDesc();
		int rowID = doc.ErrorRow();
		return FALSE;
	}
已经判断文件是存在的。[/quote] 你先检查下你的路径是否正确,再检查下你的传入的字符对不对,然后再检查你的文件内容对不对。 http://qaohao.iteye.com/blog/496237
ziyesky 2017-05-05
  • 打赏
  • 举报
回复
引用 1 楼 yoyo18520 的回复:
你设置断点调试下,很容易的。你可以先判断那个文件存不存在,再加载。
	CStringA strPath = "路径";
	TiXmlDocument doc(strPath);
	bool loadokay = doc.LoadFile();
	if (!loadokay)
	{
		std::string errStr = doc.ErrorDesc();
		int rowID = doc.ErrorRow();
		return FALSE;
	}
已经判断文件是存在的。
  • 打赏
  • 举报
回复
你设置断点调试下,很容易的。你可以先判断那个文件存不存在,再加载。
	CStringA strPath = "路径";
	TiXmlDocument doc(strPath);
	bool loadokay = doc.LoadFile();
	if (!loadokay)
	{
		std::string errStr = doc.ErrorDesc();
		int rowID = doc.ErrorRow();
		return FALSE;
	}

3,055

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC HTML/XML
社区管理员
  • HTML/XML社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧