2009-12-11 84 views
1

當使用螢火蟲或一些小書籤的:的XPath +螢火蟲+ XML/HTML + HTML AgilityPack C#

javascript:(function(){var a=document.createElement("script");a.setAttribute("src","http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js");if(typeof jQuery=="undefined"){document.getElementsByTagName("head")[0].appendChild(a)}(function(){if(typeof jQuery=="undefined"){setTimeout(arguments.callee,100)}else{jQuery("*").one("click",function(d){jQuery(this)[0].scrollIntoView();for(var e="",c=jQuery(this)[0];c&&c.nodeType==1;c=c.parentNode){var b=jQuery(c.parentNode).children(c.tagName).index(c)+1;b>1?(b="["+b+"]"):(b="");e="/"+c.tagName.toLowerCase()+b+e}window.location.hash="#xpath:"+e;prompt('Twoje wyrazenie:',e);d.preventDefault();d.stopPropagation();jQuery("*").unbind("click",arguments.callee)})}})()})(); 

我收到一個HTML的XPath的。爲了通過HTML Agility Pack或Sgml解析HTML,我需要將它轉換爲XHTML(XML)。 但問題是(我認爲)XHTML的XPath不同於HTML的XPath。 這就是爲什麼與

HtmlNode valueNode = doc.DocumentNode.SelectSingleNode(Firebugs_XPath); 

例如使用時Firebug的「XPath的複製」功能不起作用,螢火/書籤給(如果我刪除TBODY它不會幫助):

/html/body/div[2]/table/tbody/tr/td[2]/table/tbody/tr[2]/td[2]/form/table/tbody/tr[2]/td/div/table/tbody/tr/td[2]/table/tbody/tr[2]/td[2]/u 

和適當的代碼是(給予或採取):

/html/body/div/table/tr[1]/td[2]/table/tr[1]//td[2]/table[2]/tr[1]//td[2]/table/tr/tr/td[2]/u 

我的問題是 - 如何解決這個問題的行爲,爲了使firebugXpath-> HtmlAgilityPack工作。 而且 - 這是可能的,以使用內置C#WebBrowser組件的書籤。

我真的很感謝你的幫助。

回答

0

Firebug的標記表示可能與實際的XHTML不同,因爲它試圖標準化標記,這就是XPath查詢生成的對象,而不是實際的底層XHTML。我不確定是否有可能改變這種行爲,你可能只需要手動調整XPath。

0

我與嘗試使用螢火蟲和鉻和ie的開發工具獲得正確的xpath的問題相同,所以我編寫了一個應用程序使用HTML敏捷包找到xpath。

http://letschat.info/?p=23