bool prova4::Load(const char *xml) { try { XmlParser p(xml); while(!p.IsTag()) p.Skip(); int i =0; p.PassTag("prova"); while(!p.End()) if(p.Tag("car")) { String car = p.ReadText(); dl.Add(i, car); if(car == carDefault) { dl.SetIndex(i); loadSelect(xml, car); } i++; p.End(); } else { p.Skip(); } return true; } catch(XmlError e) { Exclamation("XML error: " + e); return false; } } bool prova4::loadSelect(const char *xml, String car) { try { XmlParser p(xml); while(!p.IsTag()) p.Skip(); p.PassTag("prova"); while(!p.End()) if(p.Tag("car")) if(p.ReadText() == dl.GetValue()) { p.End(); p.PassTag("value"); while(!p.End()) if(p.TagE("Select1")) select1 = ScanDouble(p["value"]); else if(p.TagE("Select2")) select2 = ScanDouble(p["value"]); else if(p.TagE("Select3")) select3 = ScanDouble(p["value"]); } else { p.End(); p.PassTag("value"); p.SkipEnd(); } return true; } catch(XmlError e) { Exclamation("XML error: " + e); return false; } }
<?xml version="1.0"?> <prova> <car>A</car> <value> <Select1 value="1"/> <Select2 value="2"/> <Select3 value="3"/> </value> <car>B</car> <value> <Select1 value="4"/> <Select2 value="5"/> <Select3 value="6"/> </value> <car>C</car> <value> <Select1 value="7"/> <Select2 value="8"/> <Select3 value="9"/> </value> <car>D</car> <value> <Select1 value="10"/> <Select2 value="11"/> <Select3 value="12"/> </value> </prova>
Report message to a moderator