read()
потребляет. Таким образом, вы можете сбросить файл или искать до начала перед повторным чтением. Или, если он выполняет вашу задачу, вы можете использовать read(n)
для использования только n
байтов.
Ответы ChaosPandion и Martin v. Löwis оба работают для образца, который вы даете, но если вы запрашиваете следующий tr, то, вероятно, в некоторых случаях в этой таблице есть дополнительные элементы tr. В этом случае ответы дадут все следующие или последующие элементы tr.
Кроме того, следуя главному вопросу, а не образцу, xpath, вероятно, должен учитывать, что X находится в сотой ячейке, а не в td. И я предполагаю, что вы бы хотели следующий tr, если он находится в том же родительском элементе (thead, tbody, tfoot).
Так что я бы пошел на
//tr[* = 'X']/following-sibling::tr[1]
Это должно сработать.
tr[td/text() = 'X']/following-sibling::node()
В зависимости от характера приложения рекомендуется использовать забытый пароль в следующем порядке
В паттерне Model View Presenter вы обычно обнаруживаете, что Presenter заботится о работе с моделью и решает, какая информация из нее потребуется для формирования какой-то визуализации.
На этой диаграмме стрелки представляют зависимости:
Обычно вы слышите, что обсуждение этого шаблона возникает при обсуждении инфраструктуры ASP.NET MVC, и сталкиваетесь с информацией о шаблоне MVP и его реализации в ASP.NET WebForms. По моему опыту, часто считается, что WebForms сам по себе является структурой с шаблоном MVP - это неправда. WebForms, однако, очень упрощает реализацию шаблона MVP - лучшим ресурсом для этого будет исследование фабрики программного обеспечения веб-клиента от группы шаблонов и практик:
Сайт CodePlex: http: //www.codeplex .