Es müssen 2 Knoten gezogen und die Informationen in LibXML kombiniert werden

Ich habe ein Problem, bei dem ich Hilfe gebrauchen könnte. Sei zuerst sanft. Ich bin neu in Perl und LibXML.

Ich habe ein Dokument analysiert und Elemente in ein Array platziert, das dann in eine Tabellenspalte geschrieben wird. Bei Tests wurde festgestellt, dass einige Knoten mehr als einen untergeordneten Knoten mit demselben Namen haben. Ich muss den Text von jedem dieser Kindknoten in ein Element des Arrays kombinieren.

Das (stark vereinfachte) Format der XML lautet:

<Group>
    <title>
    <description>
    <reference>
    <fixtext>
    <check>
        <check-content> "Some text I want to pull"

Aber gelegentlich ist es so:

<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"

Ich kann den gesamten Text aus "check-contents" ziehen, aber wenn es mehr als einen gibt, wirft er die Datenzeile in der Tabelle ab. Ich muss etwas sagen können wie:

Wenn es 2 oder mehr "check-content" gibt, verbinden Sie die Daten und übertragen Sie sie in das Array. Wenn nicht, übertragen Sie die Daten einfach in das Array.

Jede Hilfe wäre sehr dankbar.

Was ich getan habe, ist das.

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);
 }

Antworten auf die Frage(1)

Ihre Antwort auf die Frage