使用tinyxml解析器不能正常读取文件,该如何解决
使用tinyxml解析器不能正常读取文件
我从网上下了一个tinyxml的解析代码文件,在其基础上编写了一个读取XML的类CXMLHelper。
起初在当前工程路径下创建了一个文件夹data在data目录下创建了station文件夹。在路径“..\data\stations\”下则是所有的一个站的所有xml文件。其中相关函数如下
以上运行起来,程序没问题
由于一个站得所有的XML文件直接在station文件夹,对于多站的管理就带来了麻烦,因此我在station文件夹下一当前站名创建了一个文件夹,将该站的所有文件全部复制到该文件下,同时对相关函数进行修改,修改如下
然而修改后数据无法读取,运行到BOOL existed = myDocument->LoadFile(m_FilePath);时出现问题了,修改前existed是1,但是修改后运行到这时existed变为0了,实在不解,忘哪位高位帮忙解答一下
------解决方案--------------------
问题可能是GetCurrentDirectory(一般是用GetModuleFileName)
将m_FilePath打印出来看看路径正确没?
------解决方案--------------------
用m_FilePath打印出来的路径,用浏览器试下能否open,据此来测试路径是否正确
------解决方案--------------------
我从网上下了一个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,据此来测试路径是否正确
------解决方案--------------------