//private void ReadIfAction(IfAcion ifAction) //{ //} private static IfAcion ReadIfAction(FSMXmlReader reader) { IfAcion ifAction = new IfAcion(); var node = reader.CurrentNode; var condNode = node.SelectSingleNode("s:cond", reader.nsmgr); if (condNode != null) { reader.ReadStartNode(condNode); ifAction.Cond = reader.ReadFirstChildExpression(); reader.ReadEndNode(); } var thenNode = node.SelectSingleNode("s:then", reader.nsmgr); if (thenNode != null) { reader.ReadStartNode(thenNode); reader.ReadActions(reader.FilterChildNodeType(), ifAction); reader.ReadEndNode(); } //ReadIfAction(ifAction); foreach (XmlNode elseIfNode in node.SelectNodes("s:elseIf", reader.nsmgr)) { reader.ReadStartNode(elseIfNode); //IfAcion elseIfAction = new IfAcion(); //ReadIfAction(elseIfAction); IfAcion elseIfAction = ReadIfAction(reader); ifAction.AddElseIf(elseIfAction); reader.ReadEndNode(); } var elseNode = node.SelectSingleNode("s:else", reader.nsmgr); if (elseNode != null) { reader.ReadStartNode(elseNode); ActionsContainer elseAction = new ActionsContainer(); reader.ReadActions(reader.FilterChildNodeType(), elseAction); ifAction.Else = elseAction; reader.ReadEndNode(); } return(ifAction); }
private static RaiseAction ReadRaiseAction(FSMXmlReader reader) { RaiseAction raise = new RaiseAction(); raise.Event = reader.ReadAttributeValue <string>("event"); foreach (var child in reader.FilterChildNodeType(FSMNamespace)) { reader.ReadStartNode(child); switch (child.LocalName) { case "data": raise.DataExpr = reader.ReadFirstChildExpression(null); break; } reader.ReadEndNode(); } return(raise); }
private static ForeachAcion ReadForeachAction(FSMXmlReader reader) { ForeachAcion foreachAction = new ForeachAcion(); var childs = reader.FilterChildNodeType(); var itemsNode = childs.FirstOrDefault(); if (itemsNode.LocalName == "items") { reader.ReadStartNode(itemsNode); foreachAction.Items = reader.ReadFirstChildExpression(); reader.ReadEndNode(); } else { throw new FSMReadException("Not Child Node items", reader.CurrentNode); } reader.PushScope(); reader.context.AddParameter(typeof(int), "index"); reader.context.AddParameter(typeof(object), "item"); reader.ReadActions(childs.Skip(1), foreachAction); reader.PopScope(); return(foreachAction); }