首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

使用tinyxml解析器不能正常读取文件,该如何解决

2012-01-16 
使用tinyxml解析器不能正常读取文件我从网上下了一个tinyxml的解析代码文件,在其基础上编写了一个读取XML

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

C/C++ code
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文件夹下一当前站名创建了一个文件夹,将该站的所有文件全部复制到该文件下,同时对相关函数进行修改,修改如下
C/C++ code
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);

热点排行