3 Stimmen

mit perl string xml in einen Knoten einfügen

Ich habe das folgende XML als String in einer Variablen $myXML und muss es in Root->grouping einfügen

<mydata seq="ee">
    <subdata name="bla" value="bla" />
</mydata>

Das obige Xml muss in Root->Gruppierung eingefügt werden

<root>
  <grouping>    
  </grouping>
</root>

Ich bin derzeit mit XML::Twig so ideal, wenn Sie mir helfen könnte, dass

bearbeiten: Ich habe es mit einer komplexen < Root > Struktur zu tun, die sich in einer Datei befindet. Ich brauche eine Möglichkeit, diese < Root > xml in Perl zu laden und meine xml Zeichenfolge als Knoten einzufügen. Auch in meinem Fall < Gruppierung > hat bereits einige Knoten in ihm.

3voto

mirod Punkte 15573

So würde ich es machen: Ich würde ein Element aus dem XML in $myXML und fügen Sie es dann als letztes Kind von grouping :

#!/usr/bin/perl

use strict;
use warnings;

use XML::Twig;

my $myXML='<mydata seq="ee"><subdata name="bla" value="bla" /></mydata>';

my $t= XML::Twig->new( twig_handlers => { grouping => sub { grouping( $myXML, @_); }, })
                ->parsefile( "so_insert.xml");

$t->print;
exit;

sub grouping
  { my( $xml, $t, $grouping)= @_;
    my $new_elt= XML::Twig::Elt->parse( $xml);
    $new_elt->paste( last_child => $grouping);
  }

2voto

unpythonic Punkte 3950

Verwenden Sie einen Twig-Handler, um Inhalte einzufügen, wenn Sie das Gruppierungs-Tag sehen.

Angenommen, Ihre Root-/Gruppierungsdaten befinden sich in foo.xml :

#!/usr/bin/perl

use strict;
use warnings;

use XML::Twig;

my $myXML = <<'EOT';
<mydata seq="ee">
    <subdata name="bla" value="bla" />
</mydata>
EOT

my $xml = XML::Twig->new(
    pretty_print => 'indented',
    twig_handlers => {
        grouping => sub { $_->set_text($myXML)->set_asis; }
    });

$xml->parsefile("foo.xml") or die "Failed parse of foo.xml: $@\n";
$xml->print;

0voto

Alex Howansky Punkte 47344

Habe ich etwas verpasst?

$myXML = '<root><grouping>' . $myXML . '</grouping></root>';

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X