Precisa puxar 2 nós e combinar as informações em LibXML
Eu tenho um problema com o qual poderia usar ajuda. Primeiro, seja gentil. Eu sou novo no perl e no LibXML.
Eu tenho analisado um documento e colocado elementos em uma matriz que é gravada em uma coluna de planilha. Durante o teste, descobriu-se que alguns nós têm mais de um nó filho com o mesmo nome. Eu preciso combinar o texto de cada um desses nós filhos em um elemento da matriz.
O formato (muito simplificado) do xml é:
<Group>
<title>
<description>
<reference>
<fixtext>
<check>
<check-content> "Some text I want to pull"
Mas, ocasionalmente, é assim:
<Group>
<title>
<description>
<reference>
<fixtext>
<check>
<check-content> "Some text I want to pull"
<check-content> "Some more text I want to pull and join to the first"
Eu posso extrair todo o texto de "conteúdo de verificação", mas se houver mais de um, ele jogará fora a linha de dados na planilha. Eu preciso ser capaz de dizer algo como:
Se houver 2 ou mais "conteúdo de verificação", junte os dados e pressione a matriz. Caso contrário, basta inserir os dados na matriz.
Qualquer ajuda seria muito apreciada.
O que eu tenho feito é isso.
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);
}