如果我得到一个 XPathNavigator,并用它来编译一个 XPathExpression exp,那么我可以使用 exp 的方式有什么限制?我可以将 exp 与不同的导航器一起使用吗?我知道它可以运行,并且即使编译的 XPathNavigator 是由与 Evaluating 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;
}