protected override bool Process(IInteraction parameters) { TextReader urlDataReader = null; bool success = true; SimpleInteraction valuesByName = new SimpleInteraction(parameters); Map <IInteraction> inputInteractionsByName = new Map <IInteraction> (); success = success && TryGetDatareader(parameters, null, out urlDataReader); success = success && this.ParserRunner.TryRun(urlDataReader, delegate(string name, string value) { WwwInputInteraction inputInteractions = new WwwInputInteraction(name, value, parameters); if (StringFieldWhiteList.Contains(inputInteractions.Name)) { if (Immediate) { success &= TryReportPair(valuesByName, inputInteractions); } else { if (this.DoMapping) { valuesByName [inputInteractions.Name] = inputInteractions.Value; } inputInteractionsByName [inputInteractions.Name] = inputInteractions; } } }); foreach (string fieldName in this.StringFieldWhiteList) { IInteraction currentField; if (!inputInteractionsByName.Has(fieldName)) { inputInteractionsByName [fieldName] = new WwwInputInteraction(fieldName, null, parameters); } currentField = inputInteractionsByName [fieldName]; success = success && (!Branches.Has(fieldName) || Branches [fieldName].TryProcess(currentField)); success = success && (!DoIterate || this.Iterator.TryProcess(currentField)); } success = success && (!this.DoMapping || this.Mapped.TryProcess(valuesByName)); return(success); }
protected override bool Process(IInteraction parameters) { XMLNodeInteraction preceeding = FindNode(parameters); string name; bool successful = true; XmlNodeList children; if (this.Path.Length > 0) { children = preceeding.Node.SelectNodes(this.Path); } else { children = preceeding.Node.ChildNodes; } foreach (XmlNode child in children) { name = child.LocalName.TrimStart('#'); if (Branches.Has(name)) { successful &= Branches[name].TryProcess(new XMLNodeInteraction(parameters, child, preceeding.Source)); } else if (this.AnyNode != null) { successful &= this.AnyNode.TryProcess(new XMLNodeInteraction(parameters, child, preceeding.Source)); } } if ((children.Count == 0) && (this.NoNode != null)) { successful &= this.NoNode.TryProcess(parameters); } return(successful); }