/** * This function parses an XML file formatted like * what Twallan's STBL.exe awaits */ private static int parseTwallanFormat(XElement Root, STBLWriter stblWriter) { bool awaits_key = true; bool warnings = false; string key = ""; foreach(XElement elem in Root.Descendants()) { // KEY tag if (awaits_key) { if (elem.Name == "KEY") { key = preprocessKey(elem.Value); awaits_key = false; } else { Console.WriteLine ("WARN: <KEY> awaited at {0}. Skipping.", ((IXmlLineInfo)elem).LineNumber); warnings = true; } // STR tag } else { if (elem.Name == "STR") { if (stblWriter.add(key, elem.Value) != 0) { Console.WriteLine ("WARN: element at {0} is duplicate.", ((IXmlLineInfo)elem).LineNumber); } awaits_key = true; } else { Console.WriteLine ("WARN: <STR> awaited at {0}. Skipping.", ((IXmlLineInfo)elem).LineNumber); awaits_key = true; warnings = true; } } } if (warnings) { return -2; } return 0; }