2

如果我得到一个 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;
}
4

1 回答 1

1

您可以在其他导航器上自由使用该表达式。根据 Daniel Cazzulino 的说法,创建原始导航器的文档是无关紧要的,因为 xpath 表达式编译独立于文档实例。
http://weblogs.asp.net/cazzu/archive/2003/10/07/30888.aspx

于 2013-06-26T15:57:13.423 回答