Посмотрев на различные популярные модули для работы с XML / XPath, я еще не нашел прямого способа добиться этого.
По сути, интерфейс будет выглядеть примерно так:
my $xpath = get_path($node1, $node2);
... который вернет относительный путь от $ node1 до $ node2.
Я включаю свое собственное время в расчет «эффективности» - я возьму любое существующее решение этой проблемы . В противном случае я хотел бы знать некоторые из ловушек, с которыми можно столкнуться в любых «очевидных» самодельных решениях.
Я мог представить себе, что сначала просто ищу $ node2 в потомках $ node1. , а затем, если это не удается, итерации предков $ node1, выполняющих то же самое. Будет ли это столь же ресурсозатратным, как я боюсь?
Для моего конкретного случая использования я могу предположить, что известны абсолютные пути к $ node1 и $ node2. Учитывая это, я хотел бы думать, что есть некоторая «математика XPath», которую можно было бы выполнить между двумя полными путями без необходимости бегать по всему дереву, но я не знаю, как этот процесс будет выглядеть.
резюмируйте:
1) Могут ли существующие модули CPAN облегчить то, что я хочу сделать?
2) Если нет, то какой эффективный способ сделать это?