Если я получу XPathNavigator и использую его для компиляции выражения XPathExpression, какие ограничения существуют на пути использования exp? Могу ли я использовать exp с другим навигатором? Я знаю, что он работает и, похоже, дает правильные результаты, даже если компилятор XPathNavigator был сформирован из документа или узла, который сильно отличается от оценочного XPathNavigator. Но я не знаю, безопасно ли это.
Вот простой пример того, что я имею в виду. Это бессмысленно, но иллюстрирует смысл
private object TestXPath(XmlNode n1, XmlNode n2)
{
XPathNavigator nav1 = n1.CreateNavigator();
XPathExpression exp = nav1.Compile("somexpath");
// evaluate using the navigator that compiled exp
object result = n1.Evaluate(exp);
if (result == null)
{
XPathNavigator nav2 = n2.CreateNavigator();
// evaluate using a navigator that did NOT compile exp. Is this legal?
result = nav2.Evaluate(exp);
}
return result;
}