Отказ от ответственности: Это личный проект, который я делаю для развлечения. Я не собираюсь использовать существующие библиотеки, так как это принесет некоторую радость от изучения большего количества колес .
При этом я работаю над веб-пауком и столкнулся с проблемой представления элементов формы HTML одним объектом.
Что я хочу сделать, так это иметь объект «HTML-документ», который содержит массив всех элементов формы в качестве одного из своих свойств. Проблема в том, что я не могу найти способ представления тегов <input />
, а также тегов <select />
, поскольку теги select могут иметь несколько дочерних тегов <option />
.
Есть ли какой-нибудь хороший способ представить оба тега <input />
, которые в основном хранят только пары имя / значение, и теги <select />
, которые имеют массив пар имя / значение в одном классе?
Лучшая идея, которую я до сих пор предлагал, - это обрабатывать теги <option />
тега <select />
как отдельные поля формы, подобно тому, как я представляю <input type="radio" />
или <input type="checkbox" />
.
Итак, я бы получил это:
class FormField {
public string Name { get; set; }
public string Value { get; set; }
public string Type { get; set; }
}
А затем класс коллекции для итерации:
- Класс коллекции будет представлять собой «массив массивов». Внешний массив будет иметь один внутренний массив для каждого имени в документе HTML.
- Его индексатор может получать поля по имени. Этот индекс будет возвращать массив
FormField
объектов.
- При перечислении по всем полям формы документа каждая итерация будет иметь массив
FormField
объектов, поскольку это будет массив массивов.
Это лучшее решение или есть более простой способ представить это?