2016-10-02 72 views
0

我試圖製作一個可以根據輸入內容動態創建xml的系統。我有一個永遠都是一樣的seleton,而且唯一需要動態創建的就是formfields。例如,我需要將$ testXML插入到$ writer XML中。這裏是我有什麼到目前爲止如何使用XML :: Writer插入XML perl

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

插入到

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; 

現在使用$寫入器的>原材料($ testXML);插入但格式有問題

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

+0

請澄清。這是兩個單獨的程序,還是同一個程序的兩個部分。請顯示您期望的輸出。 – Borodin

回答

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

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

我得到錯誤「raw()只有在UNSAFE設置爲./xmltest.pl第139行時纔可用。」 – jreed21

+0

@ jreed21,這意味着您需要將'UNSAFE => 1'傳遞給構造函數。 – ikegami

+0

阿確定,這似乎插入但格式是關閉的<節名稱= 「FormSectionOne」> 鮑勃測試 測試 jreed21