如何实施XPath评估?

时间:2011-03-17 00:04:06

标签: algorithm xpath

如何为XPath查询编写简单的XPath求值程序,如:

//user[role='moderator']/address/./zipcode

我正在尝试编写一个用于定位目录中文件的XPath启发工具。

编辑:我应该澄清,但我不是要编写一个完整的XPath实现。如果它支持http://www.w3schools.com/XPath/xpath_syntax.asp所见的查询,那就足够了我的目的。另外,不要担心难度级别。我有点疯狂,我会找到一种解决方法:)

3 个答案:

答案 0 :(得分:1)

我倾向于说,如果你需要问这个问题,你可能不应该这样做。如果你想继续下去,首先阅读一些关于编译器编写的书籍,特别是词法和语法分析。或者,如果您不是那种从书本中学习的人,请掌握开源XPath实现并将其拆分以查看其工作原理。

答案 1 :(得分:0)

取决于它的简单程度。您可以定义表示XPath表达式的正则表达式,然后提取每个路径段并根据规则导航树。

答案 2 :(得分:0)

我已将我的评论迁移到答案。

你可能想看看这个Steps and involvement of implementing a parser (in .Net - and in this case XPath 2.0)应该说制作一个“定位文件”解析器比XPath解析器容易得多。但这些工具可能很有用:)

如果您使用.Net(并假装您的文件系统为XML)实现,并使用内部XPath解析器,则可以创建XPathNavigator,而不是创建解析器。以下是Microsoft在文件系统上运行的示例:http://msdn.microsoft.com/en-us/library/aa735772(v=vs.71).aspx

您可以将其与XPath表达式一起使用,例如

XPathNavigator navigator = new FileSystemNavigator(@"C:\Program Files");

XPathExpression expression1 = XPathExpression.Compile("/node()");

var res = navigator.Select(expression1);