Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm XPath评估是如何实现的?_Algorithm_Xpath - Fatal编程技术网

Algorithm XPath评估是如何实现的?

Algorithm XPath评估是如何实现的?,algorithm,xpath,Algorithm,Xpath,如何为XPath查询编写一个简单的XPath计算器,如: //user[role='moderator']/address/./zipcode ? 我正试图编写一个受XPath启发的工具来定位目录中的文件 编辑:我应该澄清一下,但我不想编写一个完整的XPath实现。如果它支持类似于的查询,那就足够了。另外,不要担心难度。我有点疯了,我会想办法把它完成:)取决于它有多简单。您可以定义一个表示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编译器。