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

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

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

使用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);

热点排行