2016-10-02 3 views
0

Ich versuche, ein System zu erstellen, das basierend auf dem eingegebenen XML dynamisch erstellen kann. Ich habe einen Seleton, der immer derselbe ist, und das einzige, was dynamisch erzeugt werden muss, sind die Formfelder. Zum Beispiel muss ich $ testXML in meine $ writer XML einfügen. Hier ist, was ich bisherSo fügen Sie XML mithilfe von XML :: Writer perl ein

use strict; 
use warnings; 
use XML::Writer; 
my $test = XML::Writer->new(OUTPUT => 'self', DATA_MODE => 1, DATA_INDENT => 2,); 
$test->startTag('FormField', name => 'CheckBox1'); 
$test->startTag('Value'); 
$test->characters(''); 
$test->endTag('Value'); 
$test->endTag('FormField'); 
my $testXML = $test->end(); 

Eingefügt in

my $writer = XML::Writer->new(OUTPUT => 'self', DATA_MODE => 1,   DATA_INDENT => 2,); 
$writer->startTag('Section', name => 'FormSectionOne'); 
$writer->startTag('FormField', name => 'Person1'); 
$writer->startTag('Value'); 
$writer->characters('Bob Test'); 
$writer->endTag('Value'); 
$writer->endTag('FormField'); 
$testXML; 
my $xml = $writer->end(); 
print $xml; 

Jetzt $ writer-> raw ($ testXML) verwendet wird; Einsätze aber die Formatierung hat Probleme

<Section name="FormSectionOne"> 
     <FormField name="Person1"> 
     <Value>Bob Test</Value> 
     </FormField><FormField name="CheckBox1"> 
    <Value>test</Value> 

+0

Bitte klären. Sind das zwei separate Programme oder zwei Teile desselben Programms? Bitte zeigen Sie die Ausgabe, die Sie erwarten. – Borodin

Antwort

1
my $writer = XML::Writer->new(
    OUTPUT  => 'self', 
    DATA_MODE => 1, 
    DATA_INDENT => 2, 
    UNSAFE  => 1, 
); 

... 
$writer->raw($testXML); 
... 
+0

Ich bekomme Fehler "raw() ist nur verfügbar, wenn UNSAFE auf ./xmltest.pl Zeile 139 eingestellt ist." – jreed21

+0

@ jreed21, das bedeutet, Sie müssen 'UNSAFE => 1' an den Konstruktor übergeben. – ikegami

+0

Ah ok, das scheint es einzufügen aber die Formatierung ausgeschaltet

Bob-Test Test
jreed21

Verwandte Themen