2012-02-09 4 views
1

のXML要素を追加するために失敗:はすなわち</p> <p>元のXMLをフォーマットしていない、私はXMLファイルに要素を追加するとき、それは1行に書かれているいくつかの理由のXML形式の構造

となった
<configuration> 
<property> 
<name>test1</name> 
</property> 
</configuration> 

my $parser =XML::LibXML->new(); 
my $doc =$parser->parse_file($file) or die $!; 
my $root =$doc->getDocumentElement; 
my $searchPath="/configuration"; 
my ($val)=$root->findnodes($searchPath); 
my $propTag=$doc->createElement("property"); 
$val->appendChild($propTag); 
my $nameTag=$doc->createElement("name"); 
$nameTag->appendTextNode($name); 
$propTag->appendChild($nameTag); 
$doc->setDocumentElement($root); 
$doc->toFile($file,1); 

<configuration> 
<property> 
    <name>test1</name> 
</property> 
    <property><name>test2</name></property></configuration> 

の代わりに:

<configuration> 
<property> 
    <name>test1</name> 
</property> 
<property> 
    <name>test2</name> 
    </property> 
</configuration> 
+0

空白はXMLで重要になります。 XML :: LibXMLは、追加するよう指示していない空白を追加しません。 – ikegami

+0

私は 'toFile'の' format'パラメータを1から2に変更しようとしましたが、それは非常に '間隔の空いた'ファイルを与えました。これを修正する方法がわからない – zgpmax

+0

はい、私もそれを試しました。新しい要素を追加するには、XMLを使って作業するときに基本的な操作を行う必要があるため、非常に奇妙です。 –

答えて

2

Perlスクリプトの出力にxmllint --formatを実行できます。

関連する問題