我一直在寻找一种方法来使用tinyxml2附加我的xml文件,但无法找到任何东西。我将不胜感激任何帮助。
这是我的代码:
function savedata() {
XMLNode * pRoot = xmlDoc.NewElement("Cars");
xmlDoc.InsertFirstChild(pRoot);
XMLElement * pElement = xmlDoc.NewElement("Brand");
pElement->SetText("Audi");
pRoot->InsertEndChild(pElement);
pElement = xmlDoc.NewElement("type");
pElement->SetText("4x4");
pRoot->InsertEndChild(pElement);
pElement = xmlDoc.NewElement("Date");
pElement->SetAttribute("day", 26);
pElement->SetAttribute("month", "April");
pElement->SetAttribute("Year", 2015);
pElement->SetAttribute("dateFormat", "26/04/2015");
pRoot->InsertEndChild(pElement);
XMLError eResult = xmlDoc.SaveFile("SavedData1.xml");
XMLCheckResult(eResult);
}
每次运行该函数时,xml都会被覆盖,我想追加到现有文件中。
我的xml文件:
<Cars>
<Brand>Audi</Brand>
<Whatever>anothercrap</Whatever>
<Date day="26" month="April" Year="2015" dateFormat="26/04/2015"/>
</Cars>
我的根目录是,我想附加到现有文件。例如,
<Cars>
<Brand>Audi</Brand>
<type>4x4</type>
<Date day="26" month="April" Year="2015" dateFormat="26/04/2015"/>
<Brand>BMWM</Brand>
<type>truck</type>
<Date day="26" month="April" Year="2015" dateFormat="26/04/2015"/>
</Cars>
答案 0 :(得分:0)
XML是结构化数据,因此文本追加会很棘手并且可能容易出错,因为您必须确保不添加根节点两次,并且保持缩进等。
更容易的是加载XML,用TinyXML解析它,并将其写回。
答案 1 :(得分:0)
如果对xmldoc.Save使用FILE重载,则可以追加。
FILE* file = fopen("myfile.xml","a");
xmlDoc.Save(file);
fclose(file);
您只需要在执行此操作时小心,因为如果您要打印多个根节点,它将使文档混乱。如果您出于记录目的而执行此操作,那么我将完全忽略根节点,并且只知道正在读回日志的内容来追加它们,甚至根本不在乎正确的xml格式。