2011-03-17 153 views
1

我怎麼會寫一個簡單的XPath評估的XPath查詢,如:XPath評估如何實施?

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

我正在嘗試編寫一個用於在目錄中查找文件的XPath靈感工具。

編輯:我應該澄清,但我不想寫一個完整的XPath實現。如果它支持像http://www.w3schools.com/XPath/xpath_syntax.asp這樣的查詢,那就足以達到我的目的。另外,不要擔心難度級別。我有點瘋了,我會找到一種方法來拉它:)

+0

我不會。以同樣的方式,我不會寫一個C編譯器。 – 2011-03-17 03:11:09

回答

0

取決於它會是多麼簡單。您可以定義表示XPath表達式的正則表達式,然後提取每個路徑段並根據規則導航樹。

1

我傾向於說,如果你需要問這個問題,你可能不應該試圖這樣做。如果你想繼續前進,首先閱讀一些關於編譯器編寫的書籍,尤其是詞法和語法分析。或者,如果您不是那種從書本中學習的人,那麼掌握一個開源的XPath實現,並將其分開來看看它是如何工作的。

0

我已將我的意見轉換爲答案。

你可能想看看Steps and involvement of implementing a parser (in .Net - and in this case XPath 2.0)應該說製作一個「定位文件」解析器將比XPath解析器容易得多。但是這些工具可能很有用:)

如果您使用.Net(並將您的文件系統假定爲XML)實現並使用內部XPath解析器,則可以製作XPathNavigator而不是製作解析器。下面是一個例子微軟取得了哪些文件系統上的工作原理: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);