问题描述:
最近在用tinyxml保存XML文件的时候发现一个问题,程序保存几次XML格式的配置文件以后,就会发现配置文件格式出现问题了,不符合XML规范了。具体为多出了一部分内容。用tinyXML解析没有问题,但是用其他的就会出现问题,非常奇怪。
解决方案:
经过分析发现,原来tinyXML保存文件的时候是以读写的方式打开,而不是一般采用新建的方式。所以,将QIODevice::ReadWrite修改为QIODevice::WriteOnly即可
bool TiXmlDocument::SaveFile(const QString& filename) const
{
//QString f_name=filename;
QFile myf;
myf.setFileName(filename);
if(myf.open(QIODevice::ReadWrite ))
{
QTextStream qout(&myf);
//qout.setCodec(QTextCodec::codecForName("utf-8"));
if ( useMicrosoftBOM )
{
const unsigned char TIXML_UTF_LEAD_0 = 0xefU;
const unsigned char TIXML_UTF_LEAD_1 = 0xbbU;
const unsigned char TIXML_UTF_LEAD_2 = 0xbfU;
qout<<TIXML_UTF_LEAD_0<<endl;//fputc( TIXML_UTF_LEAD_0, fp );
qout<<TIXML_UTF_LEAD_1<<endl;//fputc( TIXML_UTF_LEAD_1, fp );
qout<<TIXML_UTF_LEAD_2<<endl;//fputc( TIXML_UTF_LEAD_2, fp );
}
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
QPrint(qout,0);//need coding
myf.close();
}
else
return 0;
return (myf.error()==0);
}