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;
                }
            }
        }
Beispiel #2
0
        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;
                }
            }
        }