http://msdn.microsoft.com/zh-tw/ee787055
簡單範例:
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(targetHTML);
HtmlNode n = doc.DocumentNode.SelectSingleNode("/html[1]/body[1]/table[1]/tr[1]/td[2]/font[1]");
string activity = HtmlEntity.DeEntitize(n.InnerHtml).Trim();
HtmlNode node;
if (key == "sex")
node = doc.DocumentNode.SelectSingleNode("//input[@name='" + key + "' and @checked]");
else
node = doc.DocumentNode.SelectSingleNode("//input[@name='" + key + "' ]");
if (node != null) signData.Add(key, node.Attributes["value"].Value);
else if ((signData.ContainsKey("chkmeal") && signData["chkmeal"] == "1") && key == "meal")
{
if (foodDic.ContainsKey(food))
signData.Add(key, foodDic[food]);
else
signData.Add(key, foodDic["不用餐"]);
}
不過不知道為甚麼.. 它用XPath分析出來的的東西跟我想的有點差距
因為這樣我還用了Firefox的xpath checker去看,出來的東西果然不一樣
分享一個我的解決辦法~
先設定中斷點在 SelectNodes 方法* 後,然後直接下需要的XPath的Html tag (EX: //input)
之後在每個 HtmlNode 都會有它的絕對XPath路徑,直接去看那邊吧
* SelectSingleNode 是取單一個tag,傳回HtmlNodeCollection
SelectNodes 是取多個符合的,傳回HtmlNode
沒有留言:
張貼留言