Как использовать RegEx в Perl в libXML findnodes - PullRequest
1 голос
/ 12 ноября 2010

У меня есть следующее в XML-документе:

<ul class="toggle-control toggle-retain-state">

Я использую XML :: LibXML для анализа всего документа, и мне нужно предпринять действия, когда он обнаружит вышеуказанный элемент.Код, который я унаследовал, был:

my ($toggle_container) = $xRoot->findnodes('.//*[@id = "toggle-control"]');

Кажется, что первая проблема с этим кодом заключается в том, что атрибут - это класс, а не id.Таким образом, я изменил это на класс, но это все еще не в состоянии найти это.Я предполагаю, что это из-за того, что класс «toggle-control toggle-retain-state», но то, что я действительно ищу, - это совпадение в любое время, когда он видит только атрибут переключения в атрибуте класса.Как мне изменить вызов findnodes, чтобы это произошло?

1 Ответ

6 голосов
/ 12 ноября 2010

Использование :

//ul[contains(concat(' ', @class, ' '), ' toggle-control ')]

Примечание : Всегда старайтесь избегать сокращения //, когда известна структура документа XML.Использование сокращения // может привести к значительной неэффективности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...