我不明白为什么,虽然BBBString对于每个(i,j)具有不同的内容,但在xml上节点“BBB”始终具有相同的值(对应于最后一对(i,j))。其他节点具有确切的内容!
for (unsigned short int i = 0; i < input1.size(); i++)
{
for (unsigned short int j = 0; j < input1[i].size(); j++)
{
count = 0;
max = input1[i][j].size();
iter = input1[i][j].begin();
while (count < max)
{
rapidxml::xml_node<> * new_node = doc.allocate_node(rapidxml::node_element, "Element");
new_node->append_node(doc.allocate_node(rapidxml::node_element, "AAA", (*(*iter)).getName().c_str()));
std::string BBBString = boost::lexical_cast<std::string>(input4[i]);
std::cout << "BBBString = " << BBBString << std::endl;
new_node->append_node(doc.allocate_node(rapidxml::node_element, "BBB", BBBString.c_str()));
new_node->append_node(doc.allocate_node(rapidxml::node_element, "CCC", input2[i].getName().c_str()));
new_node->append_node(doc.allocate_node(rapidxml::node_element, "DDD", input3[j].getName().c_str()));
other_node->append_node(new_node);
iter++;
count++;
}
}
}
答案 0 :(得分:0)
通常误解了rapidxml的方面。它存储指向您传递的任何字符串的指针,而不是复制内容。使用allocate_string函数,看看这个问题。 rapidxml - overwriting previous xml_nodes