前言
最近有个任务需要把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的运用。