【发布时间】:2010-02-06 09:04:27
【问题描述】:
我自己研究了 rapidXML 源并设法读取了一些值。现在我想更改它们并将它们保存到我的 XML 文件中:
解析文件并设置指针
void SettingsHandler::getConfigFile() {
pcSourceConfig = parsing->readFileInChar(CONF);
cfg.parse<0>(pcSourceConfig);
}
从 XML 读取值
void SettingsHandler::getDefinitions() {
SettingsHandler::getConfigFile();
stGeneral = cfg.first_node("settings")->value();
/* stGeneral = 60 */
}
更改值并保存到文件
void SettingsHandler::setDefinitions() {
SettingsHandler::getConfigFile();
stGeneral = "10";
cfg.first_node("settings")->value(stGeneral.c_str());
std::stringstream sStream;
sStream << *cfg.first_node();
std::ofstream ofFileToWrite;
ofFileToWrite.open(CONF, std::ios::trunc);
ofFileToWrite << "<?xml version=\"1.0\"?>\n" << sStream.str() << '\0';
ofFileToWrite.close();
}
将文件读入缓冲区
char* Parser::readFileInChar(const char* p_pccFile) {
char* cpBuffer;
size_t sSize;
std::ifstream ifFileToRead;
ifFileToRead.open(p_pccFile, std::ios::binary);
sSize = Parser::getFileLength(&ifFileToRead);
cpBuffer = new char[sSize];
ifFileToRead.read( cpBuffer, sSize);
ifFileToRead.close();
return cpBuffer;
}
但是,无法保存新值。我的代码只是将原始文件的值保存为“60”,而它应该是“10”。
Rgds 莱恩
【问题讨论】:
-
您是否知道 rapidXML 并不是一个真正的符合性 xml 解析器,甚至不是很接近,它只进行了 10% 的良好格式检查?
-
是的,我知道,但我只需要这些函数,所以这应该不是问题 + 与其他解析器相比,rapidXML 相当快。