Algorithm XPath评估是如何实现的?
如何为XPath查询编写一个简单的XPath计算器,如:Algorithm XPath评估是如何实现的?,algorithm,xpath,Algorithm,Xpath,如何为XPath查询编写一个简单的XPath计算器,如: //user[role='moderator']/address/./zipcode ? 我正试图编写一个受XPath启发的工具来定位目录中的文件 编辑:我应该澄清一下,但我不想编写一个完整的XPath实现。如果它支持类似于的查询,那就足够了。另外,不要担心难度。我有点疯了,我会想办法把它完成:)取决于它有多简单。您可以定义一个表示XPath表达式的正则表达式,然后提取每个路径段并根据规则导航树。我倾向于说,如果您需要问这个问题,您可能
//user[role='moderator']/address/./zipcode
?
我正试图编写一个受XPath启发的工具来定位目录中的文件
编辑:我应该澄清一下,但我不想编写一个完整的XPath实现。如果它支持类似于的查询,那就足够了。另外,不要担心难度。我有点疯了,我会想办法把它完成:)取决于它有多简单。您可以定义一个表示XPath表达式的正则表达式,然后提取每个路径段并根据规则导航树。我倾向于说,如果您需要问这个问题,您可能不应该尝试这样做。如果您想继续下去,请先阅读一些有关编译器编写的书籍,特别是词汇和语法分析。或者,如果你不是那种从书本中学到东西的人,那就找一个开源的XPath实现,把它拆开看看它是如何工作的。我已经把我的评论移植到了一个答案中 您可能想了解一下这一点,应该说制作“定位文件”解析器比XPath解析器容易得多。但这些工具可能很有用:) 如果使用.Net(并将文件系统冒充为XML)实现,并使用内部XPath解析器,则可以创建
XPathNavigator
,而不是创建解析器。下面是Microsoft制作的一个在文件系统上工作的示例:
您可以将其与XPath表达式一起使用,如
XPathNavigator navigator = new FileSystemNavigator(@"C:\Program Files");
XPathExpression expression1 = XPathExpression.Compile("/node()");
var res = navigator.Select(expression1);
我不会的。同样,我也不会编写C编译器。