從htmlagilitypack中的表單中獲取字段

html-agility-pack

我想得到一個表格的數據,所以我寫下面。它沒有用

doc.DocumentNode.SelectNodes("//form[@name='F1']//input[@name]");

把它分成兩步呢

doc.DocumentNode.SelectNodes("//form[@name='F1']//input[@name]");

但是我從整個html文件中獲取數據,而不是意外的節點/表單。我如何僅從該表單中獲得結果?我嘗試/input[@name].//input[@name] /input[@name] .//input[@name] ,這給了我null

熱門答案

這似乎是Html Agility Pack中<form>標籤解析的默認行為。正如他們在這裡所說:

FORM被視為這樣,因為許多HTML頁面曾經有重疊的形式,因為這實際上是原始HTML的(強大的)功能。現在存在XML和XHTML,每個人都認為重疊是一個錯誤,但它不是(在HTML 3.2中)。

您可以使用以下方法更改它:

HtmlNode.ElementsFlags.Remove("form");

並且你的"//form[@name='F1']//input[@name]"表達式應該有效。或者將第二個表達式更改為".//input[@name]" ,它也應該有效:

HtmlNode.ElementsFlags.Remove("form");



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因