private void parseXmlFile(string language, string filename) { XmlPath myPath = new XmlPath(); string key = ""; bool gotten = false; string text = ""; XmlReader reader = new XmlTextReader(filename); while (reader.Read()) { switch (reader.NodeType) { case XmlNodeType.Element: // Узел является элементом. String tempAttr = (reader.HasAttributes) ? (reader.GetAttribute(0)) : (""); key = tempAttr; myPath.Push(new PathAtom(reader.Name, tempAttr)); if (reader.IsEmptyElement) { if (xmlDict.ContainsKey(myPath.GetPathAsString())) { xmlDict[myPath.GetPathAsString()].SetTranslation(language, text); } else { xmlDict.Add(myPath.GetPathAsString(), new CMultiData(key, language, text, filename, myPath)); } text = ""; myPath.Pop(); } break; case XmlNodeType.Text: // Нашли текст в элементе, сохраняем его text = reader.Value.Trim(); gotten = true; break; case XmlNodeType.EndElement: // Нашли конец элемента, сохраняем данные в словарь if (gotten) { if (xmlDict.ContainsKey(myPath.GetPathAsString())) { xmlDict[myPath.GetPathAsString()].SetTranslation(language, text); } else { xmlDict.Add(myPath.GetPathAsString(), new CMultiData(key, language, text, filename, myPath)); } gotten = false; text = ""; key = ""; } myPath.Pop(); break; } } }
private void parseXmlFile(XmlReader reader, XDocument engDoc, string filename) { string phrase = ""; string eng = ""; XmlPath myPath = new XmlPath(); bool gotten = false; while (reader.Read()) { switch (reader.NodeType) { case XmlNodeType.Element: // Узел является элементом. String tempAttr = (reader.HasAttributes) ? (reader.GetAttribute(0)) : (""); myPath.Push(new PathAtom(reader.Name, tempAttr)); if (reader.IsEmptyElement) { eng = ""; xmlDict.Add(id++, new CXmlData(phrase, eng, filename, myPath)); phrase = ""; eng = ""; myPath.Pop(); } break; case XmlNodeType.Text: // Нашли текст в элементе, сохраняем его phrase = reader.Value.Trim(); gotten = true; break; case XmlNodeType.EndElement: // Нашли конец элемента, сохраняем данные в словарь if (gotten) { XmlPath cpy = new XmlPath(myPath); eng = getValueFromXml(engDoc, cpy); xmlDict.Add(id++, new CXmlData(phrase, eng, filename, myPath)); gotten = false; phrase = ""; eng = ""; } myPath.Pop(); break; } } }