Как осуществляется оценка XPath? - PullRequest
1 голос
/ 17 марта 2011

Как мне написать простой оценщик XPath для запроса XPath, например:

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

?

Я пытаюсь написать инструмент на основе XPath для поиска файлов в каталоге.

Редактировать: я должен был уточнить, но я не пытаюсь написать полноценную реализацию XPath.Если он поддерживает запросы, такие как http://www.w3schools.com/XPath/xpath_syntax.asp,, этого достаточно для моих целей.Кроме того, не беспокойтесь об уровне сложности.Я немного сумасшедший, и я найду способ справиться:)

Ответы [ 3 ]

1 голос
/ 17 марта 2011

Я склонен сказать, что если вам нужно задать вопрос, вы, вероятно, не должны пытаться это сделать.Если вы хотите идти дальше, начните с чтения некоторых книг по написанию компиляторов, особенно по лексическому и синтаксическому анализу.В качестве альтернативы, если вы не относитесь к тем, кто учится на книгах, возьмите реализацию XPath с открытым исходным кодом и разберите ее, чтобы посмотреть, как она работает.

0 голосов
/ 17 марта 2011

Я перенес свои комментарии в ответ.

Возможно, вы захотите взглянуть на это Шаги и участие в реализации синтаксического анализатора (в .Net - и в данном случае XPath 2.0) Следует сказать, что создание парсера "locate files" будет ОЧЕНЬ МНОГО проще, чем парсер XPath. Но инструменты могут быть полезны:)

Вместо создания синтаксического анализатора вы можете создать XPathNavigator, если используете реализацию .Net (и подделываете свою файловую систему как XML) и используете внутренний синтаксический анализатор XPath. Вот пример, который 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);
0 голосов
/ 17 марта 2011

Зависит от того, насколько все будет просто. Вы можете определить регулярное выражение, представляющее выражение XPath, а затем извлечь каждый сегмент пути и перемещаться по дереву в соответствии с правилами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...