Ejemplo n.º 1
0
        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;
                }
            }
        }
Ejemplo n.º 2
0
 public string GetPathString()
 {
     xmlPath.InvertIt();
     return(xmlPath.GetPathAsString());
 }