![](/img/trans.png)
[英]HTML to XML conversion or a good HTML Parser Suggestion written in .Net
[英]Looking for a good HTML parser that will provide offsetHeight like values
我有一個項目,要求我將HTML文檔作為字符串加載並解析。 我正在嘗試確定哪個HTML節點將超過頁面的高度(8.5x11),因此我可以在其之前插入“ page-break-after”。 這將通過我正在生成的.NET dll完成。
我嘗試使用mshtml dom。 將字符串值加載到其中並不容易,而且當我設法完成此操作時,offsetHeight(etc)屬性始終返回零。 我發現實現此目的的唯一方法是將HTML保存到磁盤,通過SHDocVw.InternetExplorer加載它,然后將其傳遞給mshtml dom。
我假設除非HTML由SHDocVw“呈現”,否則我沒有offsetHeight信息供mshtml報告,因為這是基於屏幕像素的。 我可能是錯的。
我當前的代碼如下:
Dim myIE As New SHDocVw.InternetExplorer
myIE.Navigate("D:\Temp\Test.HTML")
Dim myDoc As mshtml.HTMLDocument = CType(myIE.Document, mshtml.HTMLDocument)
Dim divTag As mshtml.IHTMLElement = myDoc.getElementById("someID")
For Each childNode As mshtml.IHTMLElement In TryCast(divTag.children, mshtml.IHTMLElementCollection)
If childNode.offsetTop + childNode.offsetHeight > 750 Then '72pixels = 1 inch.
childNode.insertAdjacentHTML("beforeBegin", "<DIV style='page-break-after:always'></DIV>")
End If
Next
我有兩個目標。 #1是關鍵,#2是理想選擇。
1)從字符串加載HTML,並使以上代碼仍然有效。
2)從概念上講,找到一個將執行相同操作的.NET組件。 除非我別無選擇,否則我不喜歡依賴.NET中的COM組件。
WebBrowser(也許不確定)將獲取您的HTML字符串並將其轉換為可導航的DOM。 重用,不要重新發明HTML解析器。 在項目結束時,您將剩下更多的頭發。
使用Codeplex的Html Agility Pack ,它是HTML的最詳盡的解析器,並基於HTML結構創建DOM樹。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.