Нужно вытащить 2 узла и объединить информацию в LibXML
У меня есть проблема, с которой я мог бы помочь. Во-первых, будь нежным. Я новичок в Perl и LibXML.
Я анализировал документ и помещал элементы в массив, который затем записывался в столбец таблицы. Во время тестирования было обнаружено, что некоторые узлы имеют более одного дочернего узла с одинаковым именем. Мне нужно объединить текст из каждого из этих дочерних узлов в один элемент массива.
(Очень упрощенный) формат xml:
"Some text I want to pull"
Но иногда это так:
"Some text I want to pull"
"Some more text I want to pull and join to the first"
Я могу вытащить весь текст из "чек-содержание», но если их несколько, это сбрасывает строку данных в электронной таблице. Я должен быть в состоянии сказать что-то вроде:
Если есть 2 или болеечек-контент» объединить данные толчком в массив. Если нет, просто вставьте данные в массив.
Любая помощь будет принята с благодарностью.
Что я делал, так это
my @Check_Content;
my $Check_Content;
my $parser = XML::LibXML->new() or die $!;
my $doc1 = $parser->parse_file($filename1);
my $xc1 = XML::LibXML::XPathContext->new($doc1->documentElement() );
$xc1->registerNs(x => 'http://checklists.nist.gov/xccdf/1.1');
for my $Check_Content ($xc1->findnodes('//x:Group/x:Rule/x:check/x:check-content')) {
push (@Check_Content, $Check_Content->to_literal);
}