我一直在为大学做一些事情
是为了保存一些东西,我选择 tinyxml 这样做
TiXmlDocument doc;
TiXmlDeclaration* decl = new TiXmlDeclaration("1.0", "", "");
doc.LinkEndChild(decl);
TiXmlElement* cm = new TiXmlElement("CocktailMachine");
doc.LinkEndChild(cm);
TiXmlElement* disp = new TiXmlElement("dispensers");
cm->LinkEndChild(disp);
TiXmlElement* cock = new TiXmlElement("cocktails");
cm->LinkEndChild(cock);
TiXmlElement* ingr = new TiXmlElement("ingredients");
cm->LinkEndChild(ingr);
for (size_t i = 0; i < dispensers.size(); i++)
{
stringstream ss;
ss << i;
string s = ss.str();
TiXmlElement* x_disp = new TiXmlElement(s.c_str());
disp->LinkEndChild(x_disp);
x_disp->SetAttribute("number", dispensers.at(i)->get_number());
if (dispensers.at(i)->get_ingredient() == NULL) {
x_disp->SetAttribute("ingredient", "NULL");
}
else {
x_disp->SetAttribute("ingredient", dispensers.at(i)->get_ingredient()->get_name().c_str());
}
}
if (cocktails.size() != 0)
for (size_t i = 0; i < cocktails.size(); i++)
{
stringstream ss;
ss << i;
string s = ss.str();
TiXmlElement* ct = new TiXmlElement(s.c_str());
cock->LinkEndChild(ct);
ct->SetAttribute("name", cocktails.at(i)->get_name().c_str());
for (size_t j = 0; j < cocktails.at(i)->get_ingredients().size(); j++)
{
stringstream ss;
ss << j;
string s = ss.str();
TiXmlElement* ct_s = new TiXmlElement(s.c_str());
ct->LinkEndChild(ct_s);
ct_s->SetAttribute("ingredient", cocktails.at(i)->get_ingredients().at(j)->get_name().c_str());
}
}
if (ingredients.size() != 0)
for (size_t i = 0; i < ingredients.size(); i++)
{
stringstream ss;
ss << i;
string s = ss.str();
TiXmlElement* x_ingr = new TiXmlElement(s.c_str());
ingr->LinkEndChild(x_ingr);
x_ingr->SetAttribute("name", ingredients.at(i)->get_name().c_str());
}
doc.SaveFile("CM.xml");
doc.Clear();
这会将一些东西保存到 CM.xml
<?xml version="1.0" ?>
<CocktailMachine>
<dispensers>
<0 number="1" ingredient="NULL" />
<1 number="2" ingredient="NULL" />
<2 number="3" ingredient="NULL" />
<3 number="4" ingredient="NULL" />
<4 number="5" ingredient="NULL" />
<5 number="6" ingredient="NULL" />
</dispensers>
<cocktails>
<0 name="Tequila Sunrise">
<0 ingredient="Tequila" />
<1 ingredient="Orange juice" />
<2 ingredient="Grenadine" />
</0>
<1 name="tq2">
<0 ingredient="Tequila" />
<1 ingredient="Orange juice" />
<2 ingredient="Grenadine" />
</1>
</cocktails>
<ingredients />
</CocktailMachine>
当我尝试用这个加载它时
TiXmlDocument* doc = new TiXmlDocument("example1.xml");
if (!doc->LoadFile())
cout << "false";
它总是返回 false
尝试加载“helloworld.xml”工作正常
<?xml version="1.0" ?>
<Hello>World</Hello>
那么我的 xml 的问题在哪里?
在此先感谢 Jonny0815