免責聲明:這是一個我正在爲樂趣而做的個人項目。我不打算使用現有的庫,因爲它會從learning more about wheels中獲得一些快樂。如何設計一個對象來表示所有HTML表單元素?
這就是說,我正在研究一個網絡蜘蛛,並且我遇到了如何用單個對象來表示HTML表單元素的問題。
我想要做的是有一個「HTML文檔」對象,其中包含所有表單元素的數組作爲其屬性之一。問題是我找不到一種方法來代表<input />
標籤以及<select />
標籤,因爲選擇標籤可以有多個子標籤<option />
。
有沒有什麼好的方法可以代表<input />
標籤,它們基本上只存儲名稱/值對,<select />
標籤在同一個類中有一組名/值對?
我想出迄今最好的辦法是把一個<select />
標籤作爲單獨的表單字段,類似於我會如何表示<input type="radio" />
或<input type="checkbox" />
的<option />
標籤。
所以我有這樣的:
class FormField {
public string Name { get; set; }
public string Value { get; set; }
public string Type { get; set; }
}
然後集合類迭代會:
- 集合類將是一個「數組的數組」。外部數組對於HTML文檔中的每個名稱都有一個內部數組。
- 其索引器可以通過名稱獲取字段。該索引將返回一個
FormField
對象的數組。 - 枚舉整個文檔的表單域時,每個迭代都會有一個
FormField
對象的數組,因爲它將是一個數組數組。
這是最好的解決方案,還是有一種更簡單的方法來表示?
我認爲,但我試圖避免需要構建一個完整的DOM樹,只創建一個對我的蜘蛛很重要的元素列表(鏈接和表單字段,可能是圖像元素和外部CSS/JavaScript URL ) – 2010-02-27 15:15:49
很好...然後用form標籤作爲基本元素而不是body標籤來構建結構。從那一刻起,其他一切都適用。 – JDMX 2010-02-27 21:31:55