2010-07-13 70 views
1

我創建了下面的XML文件,由perl腳本(顯示關閉),使用XML ::的libxml:perl + DOM +使用XML :: LibXML +如何從XML文件中刪除xml版本標題?與DOM

more test.xml 

<?xml version="1.0"?> 
<books> 
<computer/> 
</books> 

我的問題:如何刪除 「XML版本標題」:

 <?xml version="1.0"?> 
來自test.xml文件的

?在perl腳本中使用DOM命令?

爲了只獲取text.xml文件follwoing行:

<books> 
<computer/> 
</books> 

耶爾

perl腳本:

#!/usr/bin/perl 

use strict; 
use warnings; 
use XML::LibXML; 

my $doc = XML::LibXML::Document->new; 
my $root = $doc->createElement('books'); 
$doc->setDocumentElement($root); 

my $computer = $doc->createElement('computer'); 
$root->appendChild($computer); 
$doc->toFile('/var/tmp/test.xml'); 
+0

爲什麼?它指定的值是默認值,因此數據的含義將保持不變。 – Quentin 2010-07-13 09:59:38

+0

這些值只是示例 問題的主要目標是從test.xml文件中刪除xml版本 yael – yael 2010-07-13 10:06:13

+0

閱讀代碼後,我發現應該可以將變量'$ skipXMLDeclaration'設置爲1。我似乎沒有足夠的關於範圍等知識,所以我不能得到它的工作。 – musiKk 2010-07-13 10:22:06

回答

3

好吧,關於我以前的評論,我現在找到了一個解決方案。

看起來toFile繞過$skipXMLDeclarationtoString沒有。所以下面的工作:

$XML::LibXML::skipXMLDeclaration = 1; 

my $doc = XML::LibXML::Document->new; 
# create your document 

print $doc->toString; 

(非常小)的缺點是,你必須自己寫文件。

+0

THX可以請教建議最好的方式來打印$ doc-> toString; (爲了保存文件中的XML文件? yoel – yael 2010-07-13 11:06:53

+0

來吧,這並不難,你只需打開一個文件句柄並打印到它......'打開我的$ fh,'>', $ filename; print $ fh $ doc-> toString; close $ fh;' – musiKk 2010-07-13 11:11:19

+0

非常奇怪的事實:如果你把它關掉,它也會禁用漂亮的打印。 – simbabque 2012-06-05 13:22:12