Я использую XML::LibXML
, и мне просто нужно получить количество узлов, указанных XPath выражение.
Использование любой из первых двух строк кода ниже дает то, что я ищу. Я могу использовать функцию count
XPath либо с findvalue
, либо с find
, но не с findnodes
(да, я знаю, потому что она возвращает список).
my $node_cnt = $dom->findvalue("count($xpath_str)"); # WORKS!
my $node_cnt = $dom->find("count($xpath_str)"); # WORKS!
my @node_cnt = $dom->findnodes("count($xpath_str)"); # count doesn't work!
Что приводит меня к общему мучительному вопросу: в чем разница между тремя типами find
? В документации сказано:
$string = $node->findvalue($xpath)
$result = $node->find($xpath)
@nodes = $node->findnodes($xpath_expression)
Есть ли разница между аргументом
$xpath_expression
и просто$xpath
в документации?Какая разница для двух, возвращающих скаляр?
Я пытаюсь понять важность использования одного типа поиска над другим - спасибо!