Я использую XML :: Twig для анализа XML-файла и печати некоторой информации. Вот мой XML-файл:Perl: Получить несколько дочерних элементов элемента XPath
<report>
<reportheader>
<month>February 2015</month>
<dateofgeneration>20/02/2015 - 12:29:02</dateofgeneration>
</reportheader>
</report>
и у меня есть следующий код:
XML::Twig->new(
twig_handlers => {
'/report/reportheader' => sub {
printf qq|%s\n|, $_->text;
},
},
)->parsefile($ARGV[0]);
К сожалению, это печатает February 201520/02/2015 - 12:29:02
. Есть ли способ разделить эти два, а не объединять их? Я надеялся сделать что-то вроде:
printf qq|Month: %s\nDate: %s\n|, $_->text[0], $_->text[1];
, чтобы разделить его на две переменные, но это не сработало.
не так просто бы ' '/ отчет/reportheader/*' 'для выбора? «Текст» или «значение» элемента Element - это, как правило, конкатенация текстового контента из себя и всех детей. – user2864740
Ваша модификация работала немного. Теперь он печатает их на отдельных строках, но я хочу иметь другой текст, предшествующий им, т. Е. «Месяц: февраль 2015 г. \ nДата: 20/02/2015 ....' – Bijan
Вы должны иметь возможность проверить имя текущего узла. Или вы можете создать обработчик для каждого узла. – ikegami