我正在尝试为XPath创建一个"AET"(抽象表达树)(因为我正在编写一个所见即所得的XSL编辑器)。在过去的三到四个小时里,我一直在苦思冥想XPath BNF。
我想到了另一个解决方案。我想我可以编写一个实现IXPathNavigable的类,当调用CreateNavigator时返回自己的XPathNavigator。这个XPathNavigator将始终成功地处理任何方法调用,并跟踪这些调用 - 例如,我们移动到了客户节点,然后是客户节点。然后我可以使用这些信息(希望如此)来创建“ AET”(现在我们在对象模型中有了客户/客户)。
唯一的问题是:我怎样才能通过XPathExpression运行IXPathNavigable?
我知道这很懒惰。但是,还有其他人经历过这样的烦恼并编写了XPath表达式解析器吗?我还没有测试我的可能解决方案,因为我无法测试它(因为我无法对IXPathNavigable运行XPathExpression),所以我甚至不知道我的解决方案是否有效。