private IDictionary <string, object> GetVariableValueDictionary(OPathExpression opathExpression, OPathOptions opathOptions, object defaultValue, ValueLogger valueLogger) { IDictionary <string, object> variableValueDictionary = new Dictionary <string, object>(); foreach (OPathVariable opathVariable in opathExpression.Variables) { object sourceObject = GetSourceObject(opathVariable); object variableValue = null; try { variableValue = EvaluateVariableReference( sourceObject, opathVariable, opathOptions, defaultValue, valueLogger, opathExpression.OPath); } catch (Exception ex) { throw new OPathException(string.Format( "Exception occurred evaluating variable reference {0}: {1}", opathVariable.GetReference(), ex.Message), ex); } variableValueDictionary.Add(opathVariable.XPathName, variableValue); } return(variableValueDictionary); }
public object Evaluate(OPathExpression opathExpression, OPathOptions opathOptions, object defaultValue) { object opathValue = Evaluate(opathExpression, opathOptions, defaultValue, null); return(opathValue); }
public static OPathExpression Compile(string opath) { OPathParseResult parseResult = OPathParser.Parse(opath); string xpath = parseResult.GetXPath(); OPathVariable[] opathVariables = parseResult.GetVariables(); XPathExpression xpathExpression = null; try { xpathExpression = XPathExpression.Compile(xpath); } catch (XPathException ex) { throw new OPathException(string.Format( "An XPathException was thrown when compiling the expression '{0}': {1}", xpath, ex.Message), ex); } OPathExpression opathExpression = new OPathExpression(opath, opathVariables, xpathExpression); return(opathExpression); }
public static object Evaluate(OPathDocument opathDocument, OPathExpression opathExpression) { OPathNavigator targetNavigator = CreateNavigator(opathDocument); object opathValue = targetNavigator.Evaluate(opathExpression, OPathOptions.Defaults); return(opathValue); }
public static object Evaluate(OPathDocument opathDocument, OPathExpression opathExpression, OPathOptions opathOptions, object defaultValue, ValueLogger valueLogger) { OPathNavigator targetNavigator = CreateNavigator(opathDocument); object opathValue = targetNavigator.Evaluate(opathExpression, opathOptions, defaultValue, valueLogger); return(opathValue); }
private object EvaluateSingleVariable(OPathExpression opathExpression, OPathOptions opathOptions, object defaultValue, ValueLogger valueLogger) { OPathVariable opathVariable = opathExpression.Variables[0]; object sourceObject = GetSourceObject(opathVariable); object variableValue = EvaluateVariableReference( sourceObject, opathVariable, opathOptions, defaultValue, valueLogger, opathExpression.OPath); return(variableValue); }
private object EvaluateOPathExpression(OPathExpression opathExpression, OPathOptions opathOptions, object defaultValue, ValueLogger valueLogger) { XPathNavigator variableValueNavigator = (new XmlDocument()).CreateNavigator(); // Clone the XPath expression so we can set a context on it in a thread-safe manner XPathExpression clonedXPathExpression = opathExpression.XPathExpression.Clone(); IDictionary <string, object> variableValueDictionary = GetVariableValueDictionary(opathExpression, opathOptions, defaultValue, valueLogger); clonedXPathExpression.SetContext( new OPathXsltContext(variableValueDictionary, m_CustomFunctions, GetXPathValue)); object evaluatedExpression = variableValueNavigator.Evaluate(clonedXPathExpression); return(evaluatedExpression); }
public object Evaluate(OPathExpression opathExpression, OPathOptions opathOptions, object defaultValue, ValueLogger valueLogger) { object evaluatedExpression; if (m_OPathDocument == null) { m_OPathDocument = new OPathDocument(); } if (opathExpression.IsSingleVariable()) { evaluatedExpression = EvaluateSingleVariable(opathExpression, opathOptions, defaultValue, valueLogger); } else { evaluatedExpression = EvaluateOPathExpression(opathExpression, opathOptions, defaultValue, valueLogger); } return(evaluatedExpression); }
public object Evaluate(OPathExpression opathExpression) { object opathValue = Evaluate(opathExpression, OPathOptions.Defaults); return(opathValue); }