Exemple #1
0
        //////////////////////////////////////////////////////////////////////////
        /// <summary>
        /// Parse the script file.
        /// </summary>
        /// <param name="filename">Script file to parse.</param>
        /// <returns>The XmlNode of the script.</returns>
        //////////////////////////////////////////////////////////////////////////

        public static XmlNode ParseXmlFile(string filename)
        {
            XmlNode rootNode    = null;
            XmlNode currentNode = null;

            Stack <XmlNode> nodes = new Stack <XmlNode>();

            // Reader of xml node
            XmlTextReader xmlReader = new XmlTextReader(filename);

            // Read to end of file
            while (!xmlReader.EOF)
            {
                // Consume node
                xmlReader.Read();

                switch (xmlReader.NodeType)
                {
                // ==> Node content
                case XmlNodeType.Element:

                    // Create a new node with parsing information
                    currentNode = new XmlNode(xmlReader.LocalName.ToLower(), xmlReader.Value, xmlReader.LineNumber);

                    // First node read : initialize root
                    if (nodes.Count == 0)
                    {
                        rootNode = currentNode;
                        nodes.Push(rootNode);
                    }
                    else
                    {
                        // Add current node to its parent
                        XmlNode parent = nodes.Peek();
                        parent.Add(currentNode);

                        // Don't push empty nodes onto the stack
                        if (!xmlReader.IsEmptyElement)
                        {
                            nodes.Push(currentNode);
                        }
                    }

                    // Add attribute to current node
                    if (xmlReader.HasAttributes)
                    {
                        while (xmlReader.MoveToNextAttribute())
                        {
                            currentNode.Add(xmlReader.Name, xmlReader.Value);
                        }
                    }
                    break;

                // ==> End tag
                case XmlNodeType.EndElement:

                    // Pop the top node
                    nodes.Pop();
                    break;

                // Other tags
                default:
                    // Ignored
                    break;
                }
            }

            // Update root node
            rootNode.Add("file", filename);

            return(rootNode);
        }
Exemple #2
0
        //////////////////////////////////////////////////////////////////////////
        /// <summary>
        /// Parse the script file.
        /// </summary>
        /// <param name="filename">Script file to parse.</param>
        /// <returns>The XmlNode of the script.</returns>
        //////////////////////////////////////////////////////////////////////////
        public static XmlNode ParseXmlFile(string filename)
        {
            XmlNode rootNode = null;
            XmlNode currentNode = null;

            Stack<XmlNode> nodes = new Stack<XmlNode>();

            // Reader of xml node
            XmlTextReader xmlReader = new XmlTextReader(filename);

            // Read to end of file
            while (!xmlReader.EOF)
            {
                // Consume node
                xmlReader.Read();

                switch (xmlReader.NodeType)
                {
                    // ==> Node content
                    case XmlNodeType.Element:

                        // Create a new node with parsing information
                        currentNode = new XmlNode(xmlReader.LocalName.ToLower(), xmlReader.Value, xmlReader.LineNumber);

                        // First node read : initialize root
                        if (nodes.Count == 0)
                        {
                            rootNode = currentNode;
                            nodes.Push(rootNode);
                        }
                        else
                        {
                            // Add current node to its parent
                            XmlNode parent = nodes.Peek();
                            parent.Add(currentNode);

                            // Don't push empty nodes onto the stack
                            if (!xmlReader.IsEmptyElement)
                                nodes.Push(currentNode);
                        }

                        // Add attribute to current node
                        if (xmlReader.HasAttributes)
                        {
                            while (xmlReader.MoveToNextAttribute())
                            {
                                currentNode.Add(xmlReader.Name, xmlReader.Value);
                            }
                        }
                        break;

                    // ==> End tag
                    case XmlNodeType.EndElement:

                        // Pop the top node
                        nodes.Pop();
                        break;

                    // Other tags
                    default:
                        // Ignored
                        break;
                }
            }

            // Update root node
            rootNode.Add("file", filename);

            return rootNode;
        }