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); }
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); }