xml :: Twig и findnodes - PullRequest
       30

xml :: Twig и findnodes

4 голосов
/ 06 октября 2011

У меня есть следующий фрагмент кода XML:

<a>
  <b> textb <b>
  <c> textc <c>
  <d> textd <d>
<\a>
<a>
  <b> textb <b>
  <c> textc <c>
  <d> textd <d>
<\a>

Я использую xml::twig для анализа, как показано ниже:

my @c= map { $_->text."\n" } $_->findnodes( './a/');

и получите textbtextctextd как один элемент массива. Есть ли возможность получить с помощью findnodes? textb, textc, textd как 3 элемента массива, а не как один?

Ответы [ 2 ]

4 голосов
/ 06 октября 2011

Используйте звездочку в конце выражения:

$_->findnodes( './a/*');

'*' соответствует любому тегу, поэтому вы получаете 3 дочерних узла - ваш текущий пример соответствует только'a', а его текст - это конкатенация текста вложенных элементов.

2 голосов
/ 06 октября 2011

в XML :: Twig 3.39 (и выше) вы можете использовать findvalue для получения массива строк.

my @c = $_->findvalue('./a/');
...