前言
最近有個任務需要把Functx XQuery Functions(http://www.xqueryfunctions.com/)上面所有的functx相關的function defintion全部down下來,存到本地文件中,這是個簡單的活兒,卻是個枯燥的活兒。鑑於本人對於枯燥乏味事情的極端厭惡,我準備編程來解析這些網頁。這篇帖子就準備記錄解決這個任務的過程。
正文
1、簡單的搜索了下我找到了HTML Agility Pack(http://htmlagilitypack.codeplex.com/),這邊有一篇中文繁體的tutorial:http://msdn.microsoft.com/zh-tw/ee787055.aspx;
2、我剛開始學習使用HAP的時候,有個錯誤的理解認爲可以根據Chrome的“審查元素”功能來找到對應node的xpath,然後用doc.DocumentNode.SelectNodes方法來獲取到相應的node,事實證明這樣是不行的,關於爲什麼,這邊有篇很好的討論:http://stackoverflow.com/questions/15826875/html-agility-pack-using-xpath-to-get-a-single-node-object-reference-not-set;
3、好吧,簡單來說這個任務我搞定了,詳細的源文件請見:https://github.com/edychang/mytoolkits/blob/master/applications/xquery_function_parser/FunctxParser/Program.cs
4、話說C#真的是相當NB啊,不看任何書的前提下兩天就能搞定一個C#程序說明這個語言學習曲線很平滑啊。
5、使用HAP的關鍵在於XPath的運用。