Exemple #1
0
        public void Parse()
        {
            XmlNode node = Document.DocumentElement;

            KScriptContainer = new KScriptContainer(Properties, this);

            KScriptContainer.LoadBuiltInTypes();
            KScriptContainer.LoadBuiltInParserHandlers();
            KScriptContainer.LoadBuiltInOperatorHandlers();
            KScriptContainer.LoadBuiltInVariableFunctionTypes();

            KScriptDocument = new Document.KScriptDocument();
            KScriptObject rootElement = GetScriptObject(node, KScriptContainer);

            KScriptContainer.FilePath      = FilePath;
            KScriptContainer.FileDirectory = Path.GetDirectoryName(FilePath);
            PrepareProperties(rootElement, node, KScriptContainer);
            RootElements = new KScriptDocumentCollectionNode(rootElement);


            Iterate(node, KScriptDocument, KScriptContainer, RootElements);
            KScriptDocument.AddChild(RootElements);

            KScriptDocument.Run(KScriptContainer);
            Complete();
        }
Exemple #2
0
        private void Iterate(XmlNode node, Document.KScriptDocument doc, KScriptContainer container, KScriptDocumentCollectionNode docNode)
        {
            foreach (XmlNode item in node.ChildNodes)
            {
                if (!(item.NodeType != XmlNodeType.Comment || item.NodeType == XmlNodeType.Text))
                {
                    continue;
                }

                KScriptObject obj = GetScriptObject(item, container);

                if (obj == null)
                {
                    continue;
                }

                if (!PrepareProperties(obj, item, container))
                {
                    continue;
                }

                IParserHandler parserHandler = GetParserInterface(obj);

                if (parserHandler != null)
                {
                    KScriptDocumentNode collection = new KScriptDocumentNode(parserHandler.GenerateKScriptObject(obj, item));
                    docNode.Nodes.Add(collection);
                    continue;
                }

                if (item.HasChildNodes)
                {
                    KScriptDocumentCollectionNode withoutParserCollection = new KScriptDocumentCollectionNode(obj);
                    Iterate(item, doc, container, withoutParserCollection);
                    docNode.Nodes.Add(withoutParserCollection);
                    continue;
                }

                docNode.Nodes.Add(new KScriptDocumentNode(obj));
                continue;
            }
        }