private void zToXmlRecursive(IStateVariable stateVariable, XmlWriter xWriter, bool isList) { if (stateVariable.XMLFieldOutputMode != XMLFieldOutputMode.None) { string nodeName = isList && stateVariable is ObjectStateVariable ? ((ObjectStateVariable)stateVariable).ObjectClassName : stateVariable.Name; if (stateVariable.XMLFieldOutputMode == XMLFieldOutputMode.Element) { xWriter.WriteStartElement(nodeName); } else { xWriter.WriteStartAttribute(nodeName); } if (stateVariable is ListStateVariable) { foreach (IStateVariable childVariable in ((ListStateVariable)stateVariable).Value) { zToXmlRecursive(childVariable, xWriter, true); } } else if (stateVariable is ObjectStateVariable) { foreach (IStateVariable memberVariable in ((ObjectStateVariable)stateVariable).Value.Values) { zToXmlRecursive(memberVariable, xWriter, false); } } else { xWriter.WriteString(stateVariable.ValueAsString()); } if (stateVariable.XMLFieldOutputMode == XMLFieldOutputMode.Element) { xWriter.WriteEndElement(); } else { xWriter.WriteEndAttribute(); } } }
public bool EvaulateExpression(ExpressionNode expression, DataScope dataScope) { IStateVariable variable1 = dataScope.GetStateVariable(expression.StateVariable); if (variable1 == null) { throw zGetMissingVariableException(expression, false); } string strValue1 = variable1.ValueAsString(); T value1; if (!zGetTypeData(strValue1, out value1)) { throw zGetFormatException(strValue1); } string strValue2; if (expression.VariableAsValue) { IStateVariable variable2 = dataScope.GetStateVariable(expression.Value); if (variable2 == null) { throw zGetMissingVariableException(expression, true); } strValue2 = variable2.ValueAsString(); } else { strValue2 = expression.Value; } T value2; if (!zGetTypeData(strValue2, out value2)) { throw zGetFormatException(strValue2); } bool result = zEvaluateExpression(expression, value1, value2); return(expression.Negated ? !result : result); }