Пример #1
0
        private WonkaBreRuleSet ParseRuleSet(XmlNode RuleSetXmlNode, bool pbLeafNode = false)
        {
            WonkaBreRuleSet CurrentRuleSet = new WonkaBreRuleSet(++(this.RuleSetIdCounter));

            AllParsedRuleSets.Add(CurrentRuleSet);

            var AttrDesc = RuleSetXmlNode.Attributes.GetNamedItem(CONST_RS_FLOW_DESC_ATTR);

            if (AttrDesc != null)
            {
                CurrentRuleSet.Description = AttrDesc.Value;
            }

            XmlNodeList ChildNodeList = RuleSetXmlNode.ChildNodes;

            foreach (XmlNode TempChildXmlNode in ChildNodeList)
            {
                if ((TempChildXmlNode.LocalName == CONST_RS_FLOW_TAG) ||
                    (TempChildXmlNode.LocalName == CONST_RS_VALID_TAG))
                {
                    bool bIsLeafNode = (TempChildXmlNode.LocalName == CONST_RS_VALID_TAG);

                    WonkaBreRuleSet NewChildRuleSet = ParseRuleSet(TempChildXmlNode, bIsLeafNode);

                    if (bIsLeafNode)
                    {
                        var AttrErrLevel = TempChildXmlNode.Attributes.GetNamedItem(CONST_RS_VALID_ERR_ATTR);
                        if (AttrErrLevel != null)
                        {
                            if (AttrErrLevel.Value.ToLower() == CONST_RS_VALID_ERR_WARNING)
                            {
                                NewChildRuleSet.ErrorSeverity = RULE_SET_ERR_LVL.ERR_LVL_WARNING;
                            }
                            else if (AttrErrLevel.Value.ToLower() == CONST_RS_VALID_ERR_SEVERE)
                            {
                                NewChildRuleSet.ErrorSeverity = RULE_SET_ERR_LVL.ERR_LVL_SEVERE;
                            }
                        }
                    }

                    NewChildRuleSet.ParentRuleSetId = CurrentRuleSet.RuleSetId;

                    CurrentRuleSet.AddChildRuleSet(NewChildRuleSet);
                }
                else if (TempChildXmlNode.LocalName == CONST_RULES_TAG)
                {
                    ParseRules(TempChildXmlNode, CurrentRuleSet);
                }
                else if (pbLeafNode && (TempChildXmlNode.LocalName == CONST_RS_FAIL_MSG_TAG))
                {
                    CurrentRuleSet.CustomFailureMsg = TempChildXmlNode.InnerText;
                }
                else if (pbLeafNode && (TempChildXmlNode.LocalName == CONST_RS_CUSTOM_ID_TAG))
                {
                    CurrentRuleSet.CustomId = TempChildXmlNode.InnerText;
                }
            }

            return(CurrentRuleSet);
        }
Пример #2
0
        public WonkaBreRuleSet ParseRuleTree()
        {
            WonkaBreRuleSet NewRootRuleSet = new WonkaBreRuleSet();

            NewRootRuleSet.RuleSetId   = ++(this.RuleSetIdCounter);
            NewRootRuleSet.Description = "Root";

            this.RootRuleSet = NewRootRuleSet;
            AllParsedRuleSets.Add(NewRootRuleSet);

            XmlDocument XmlDoc = new XmlDocument();

            if (BreXmlFilepath != null)
            {
                XmlDoc.Load(this.BreXmlFilepath);
            }
            else
            {
                using (var RuleReader = new StringReader(this.BreXmlContents))
                {
                    XmlDoc.Load(RuleReader);
                }
            }

            XmlNode RootNode = XmlDoc.LastChild;

            XmlNodeList FirstTierList = RootNode.ChildNodes;

            foreach (XmlNode FirstTierNode in FirstTierList)
            {
                if (FirstTierNode.LocalName == CONST_RS_FLOW_TAG)
                {
                    WonkaBreRuleSet NewChildRuleSet = ParseRuleSet(FirstTierNode);

                    NewChildRuleSet.ParentRuleSetId = NewRootRuleSet.RuleSetId;

                    NewRootRuleSet.AddChildRuleSet(NewChildRuleSet);
                }
            }

            return(NewRootRuleSet);
        }