读书人

施用tinyxml解析器不能正常读取文件

发布时间: 2013-01-09 09:38:15 作者: rapoo

使用tinyxml解析器不能正常读取文件
我从网上下了一个tinyxml的解析代码文件,在其基础上编写了一个读取XML的类CXMLHelper。
起初在当前工程路径下创建了一个文件夹data在data目录下创建了station文件夹。在路径“..\data\stations\”下则是所有的一个站的所有xml文件。其中相关函数如下


TiXmlDocument* CXMLHelper::CreateXMLDocument(CString fileName)
{
TiXmlDocument* myDocument = NULL;

CString file;// 文件全称

// 获得当前工程路径
static CString currentPath="";

if(currentPath == "")
{
GetCurrentDirectory(MAX_PATH,currentPath.GetBuffer(MAX_PATH));
currentPath.ReleaseBuffer();
}

m_FilePath = currentPath +"\\data\\stations\\";

// 根据文件名形成XML文件
file.Format("%s.xml",fileName);
m_FilePath += file;

// 根据XML文件创建文档对象
myDocument = new TiXmlDocument();
BOOL existed = myDocument->LoadFile(m_FilePath);
。。。。。。。

return myDocument;
}

以上运行起来,程序没问题
由于一个站得所有的XML文件直接在station文件夹,对于多站的管理就带来了麻烦,因此我在station文件夹下一当前站名创建了一个文件夹,将该站的所有文件全部复制到该文件下,同时对相关函数进行修改,修改如下

TiXmlDocument* CXMLHelper::CreateXMLDocument(CString fileName)
{
TiXmlDocument* myDocument = NULL;

CString file;// 文件全称

// 获得当前工程路径
static CString currentPath="";

if(currentPath == "")
{
GetCurrentDirectory(MAX_PATH,currentPath.GetBuffer(MAX_PATH));
currentPath.ReleaseBuffer();
}

m_FilePath = currentPath +"\\data\\stations\\"+fileName+"\\";

// 根据文件名形成XML文件
file.Format("%s.xml",fileName);
m_FilePath += file;

// 根据XML文件创建文档对象
myDocument = new TiXmlDocument();
BOOL existed = myDocument->LoadFile(m_FilePath);
。。。。。。。

return myDocument;
}

然而修改后数据无法读取,运行到BOOL existed = myDocument->LoadFile(m_FilePath);时出现问题了,修改前existed是1,但是修改后运行到这时existed变为0了,实在不解,忘哪位高位帮忙解答一下
[解决办法]
问题可能是GetCurrentDirectory(一般是用GetModuleFileName)
将m_FilePath打印出来看看路径正确没?
[解决办法]
用m_FilePath打印出来的路径,用浏览器试下能否open,据此来测试路径是否正确
[解决办法]
引用:
// 根据XML文件创建文档对象
myDocument = new TiXmlDocument();
BOOL existed = myDocument->LoadFile(m_FilePath);

哥记得:创建文档是这么弄的
myDocument = new TiXmlDocument();
....
myDocument->SaveFile(m_FilePath);

读书人网 >VC/MFC

热点推荐