private string m_strConstructXmlRules() { Hashtable hasChoice = new Hashtable(); clsLisQCRuleVO[] rules = m_arrGetRulesFromBase(); List <QualityControlRule> qcRules = new List <QualityControlRule>(); for (int i = 0; i < m_dtgQCRules.Rows.Count; i++) { if ((bool)m_dtgQCRules.Rows[i].Cells[1].Value) { hasChoice.Add(m_dtgQCRules.Rows[i].Cells[0].Value, (bool)m_dtgQCRules.Rows[i].Cells[2].Value); } } foreach (clsLisQCRuleVO vo in rules) { if (hasChoice.Contains(vo.m_strName)) { QualityControlRule rule = null; QcParserXmlRules parser = new QcParserXmlRules(vo.m_strFormula); if (parser.Rule != null) { rule = parser.Rule; rule.IsWarning = (bool)hasChoice[vo.m_strName]; rule.Name = vo.m_strName; qcRules.Add(rule); } } } return(QcParserXmlRules.ParserRuleArrToXmlString(qcRules)); }
public static string ParserOneRuleToXmlString(QualityControlRule rule) { StringBuilder sb = new StringBuilder(); sb.Append("<rule name=\"{0}\">"); sb.AppendLine(); sb.Append(@" <formula>{1}</formula>"); sb.AppendLine(); sb.Append(@" <joined>{2}</joined>"); sb.AppendLine(); sb.Append(@" <Number>{3}</Number>"); sb.AppendLine(); sb.Append(@" <warning>{4}</warning>"); sb.AppendLine(); sb.Append(@"</rule>"); return (string.Format(sb.ToString(), rule.Name, rule.Formula, Convert.ToInt32(rule.Joined), rule.Numer, Convert.ToInt32(rule.IsWarning))); }
/// <summary> /// 解析Xml文件成实例 /// </summary> /// <param name="xmlRule"></param> private void processXmlReader(XmlReader xmlRule) { try { QualityControlRule oneRule = new QualityControlRule(); while (xmlRule.Read()) { xmlRule.MoveToElement(); while (xmlRule.Read()) { if (xmlRule.Name.ToLower().Trim() == "rule") { oneRule.Name = xmlRule.GetAttribute("name"); } if (xmlRule.Name.ToLower().Trim() == "formula") { oneRule.Formula = xmlRule.ReadString(); } if (xmlRule.Name.ToLower().Trim() == "joined") { oneRule.Joined = xmlRule.ReadElementContentAsBoolean(); } if (xmlRule.Name.ToLower().Trim() == "number") { oneRule.Numer = xmlRule.ReadElementContentAsInt(); } if (xmlRule.Name.ToLower().Trim() == "warning") { oneRule.IsWarning = xmlRule.ReadElementContentAsBoolean(); ruleList.Add(oneRule); oneRule = new QualityControlRule(); } } break; } } finally { xmlRule.Close(); } }
/// <summary> /// 构造解析器 /// </summary> /// <param name="rule">规则</param> /// <param name="data">质控数据</param> public QualityControlRulesParser(QualityControlRule rule, QualityControlData data) { this.rule = rule; this.data = data; FillResult(); }