我的應用程序使用HtmlAgilityPack下載HTML文檔並使用大量XPath查詢分析它們的DOM結構。免責聲明:XPath支持對我而言非常重要,例如,我無法切換到CSS選擇器。這是我使用HtmlAgilityPack的主要原因(也可能是唯一原因)。如何獲取C#中的HTMLAgilityPack DOM元素的邊界框?
我有一個HtmlAgilityPack.HtmlNode
,從一些XPath查詢HTML文檔選擇。現在我需要實現一個額外的方法:如果這個元素由某個引擎渲染,那麼這個元素的邊界框座標是什麼?我甚至不關心哪個特定的發動機使用,讓它成爲WebKit的,MSIE,蛤蚧/火狐等我只是需要一種方法來:
- 渲染內存中的文件的任意大小的畫布上(比如說,1900 * 1200像素)。
- 設置渲染器的DOM樹,我已經有
HtmlAgilityPack.HtmlDocument
之間有一個一一對應。 - 向渲染器用於此帆布在一個特定的DOM元素(
HtmlAgilityPack.HtmlNode
)的邊界框。
我已經花了半天的時間去研究.NET的各種HTML呈現引擎,但仍然沒有找到辦法做到這一點。也許有人已經解決了類似的問題?感謝您的任何幫助。
[Awesomium(http://awesomium.com/)看起來是這個工作在合適的工具。 – Noseratio
@Noseratio我試過Awesomium。我沒有找到一種方法去做#3。 – Skiminok
#3並不特定於Awesomium。如果所需的HTML元素沒有'id'屬性,則生成一個唯一的ID並將其分配給具有HTML Agility Pack的元素。如果有'id',請使用它(確保它是唯一的)。將文檔加載到HTML引擎中,然後執行'document.getElementById(id).getBoundingClientRect()'。 Awesomium和WebBrowser控件都提供綁定來訪問DOM。 – Noseratio