2010-07-13 5 views
1

je crée le fichier XML suivant, par le script perl (affichage vers le bas), en utilisant XML :: LibXML:perl + DOM + utilise XML :: LibXML + comment supprimer le titre de la version xml du fichier XML? avec DOM

more test.xml 

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

Ma question: comment supprimer "la version xml title":

 <?xml version="1.0"?> 

à partir du fichier test.xml? Avec les commandes DOM dans le script Perl?

afin d'obtenir que les lignes follwoing dans le fichier text.xml:

<books> 
<computer/> 
</books> 

Yael

#

le script 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

Pourquoi? Les valeurs qu'il spécifie sont les valeurs par défaut, de sorte que la signification des données serait inchangée. – Quentin

+0

les valeurs sont seulement exemple la cible principale de la question est de supprimer la version xml du fichier test.xml yael – yael

+0

Après avoir lu le code, je vois qu'il devrait être possible de définir une variable '$ skipXMLDeclaration' à 1. Cependant Je ne semble pas en savoir assez sur la portée, etc., donc je ne pouvais pas le faire fonctionner. – musiKk

Répondre

3

D'accord, en ce qui concerne mon précédent commenter, j'ai maintenant trouvé une solution. Il semble toFile contourne $skipXMLDeclaration alors que toString ne le fait pas. Ainsi, les travaux suivants:

$XML::LibXML::skipXMLDeclaration = 1; 

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

print $doc->toString; 

Le (très petit) inconvénient est que vous devez écrire le fichier vous-même.

+0

THX pouvez-vous s'il vous plaît aviser la meilleure façon d'imprimer $ doc-> toString; au fichier (pour enregistrer dans le fichier le document XML? yael – yael

+0

Allez, ce n'est pas difficile, vous ouvrez juste une poignée de fichier et vous y imprimez ... 'open my $ fh, '>', $ filename; print $ fh $ doc-> toString; close $ fh; ' – musiKk

+0

Fait très étrange: Si vous l'activez, il désactive également une jolie impression WTF. :( – simbabque