Другое решение состояло бы в том, чтобы обернуть вызов к серверу и иметь его, всегда возвращают массив для упрощения остальной части жизни:
sub call_to_service
{
my $returnValue = service::call();
if (ref($returnValue) eq "ARRAY")
{
return($returnValue);
}
else
{
return( [$returnValue] );
}
}
Тогда можно всегда знать о возвращении ссылки на массив даже если это был только один объект.
foreach my $item (@{call_to_service()})
{
...
}
Для выбора по текстовому значению вы можете использовать функцию text ()
. И требуется нормализовать пробелы, потому что по умолчанию они не удаляются. Вот пример:
select/option[normalize-space(text())="Grass"]
@value
- значение атрибута «значение»
@val
- значение атрибута «val»
normalize-space ()
- функция возвращает строка аргументов с пробелами, нормализованная путем удаления начальных и конечных пробелов и замены последовательностей пробельных символов одним пробелом
Что ж, если пробелы не проблема:
/select/option[.='Grass']
Однако мне нужно проверить их повторно. Вы всегда можете нормализовать:
/select/option[normalize-space(.)='Grass']