Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 更新XML节点&;C+中的属性值+;使用RapidXML_C++_Xml_Persistence_Rapidxml - Fatal编程技术网

C++ 更新XML节点&;C+中的属性值+;使用RapidXML

C++ 更新XML节点&;C+中的属性值+;使用RapidXML,c++,xml,persistence,rapidxml,C++,Xml,Persistence,Rapidxml,我有一个XML文件,用于存储相机参数,这些参数将根据用户界面的变化进行更新。使用RapidXML,我可以读取XML文件、所有元素及其属性值。但是,当我尝试更新属性/元素的值并保存它时,文件不会反映新值,而是显示旧值。我试图在这样一个小的XML文件上测试这个概念 <?xml version="1.0" encoding="UTF-8"?> <note> <to>Kum</to> <from>Jani</from>

我有一个XML文件,用于存储相机参数,这些参数将根据用户界面的变化进行更新。使用RapidXML,我可以读取XML文件、所有元素及其属性值。但是,当我尝试更新属性/元素的值并保存它时,文件不会反映新值,而是显示旧值。我试图在这样一个小的XML文件上测试这个概念

<?xml version="1.0" encoding="UTF-8"?>
<note>
    <to>Kum</to>
    <from>Jani</from>
    <heading>Reminder</heading>
    <body>Dont forget me this weekend!</body>
</note>

库姆
贾尼
提醒
这个周末别忘了我!
这只是一个没有属性的简单示例文件> 这是我的密码

rapidxml::xml_document<> doc;
std::fstream file("TestFile.xml",std::ios::in|std::ios::out);

std::stringstream bufferStream;
bufferStream << file.rdbuf();
std::string content(bufferStream.str());
std::vector<char> buffer(content.begin(), content.end());
buffer.push_back('\0');
doc.parse<rapidxml::parse_no_data_nodes>(&content[0]);

rapidxml::xml_node<>* rootNode = doc.first_node();
std::cout <<"<"<< rootNode->name() <<">" << "\n";
rapidxml::xml_node<>* firstNode = rootNode->first_node("to");
std::cout << "<"<<firstNode->name()<<">" <<firstNode->value()<< "\n";

rapidxml::xml_node<> *real_thing = rootNode->first_node("from");

if (real_thing != nullptr)                              
{
    real_thing->value("yuck");  // now that should work
    std::cout << real_thing->name() << real_thing->value() << "\n";
}
rapidxml::xml\u文档文档;
std::fstream文件(“TestFile.xml”,std::ios::in | std::ios::out);
std::stringstream缓冲流;

bufferStreamRapidXML保存文档结构的内部表示,使用指向传递给
parse
std::vector
中保存的文本数据的指针

当修改节点的“值”时,实际上只是更改内部结构中的指针。您需要使用
rapidxml\u print.hpp
中的函数返回字符串,该函数包含一个用于写入流的运算符

file << doc;
文件
file << doc;