[Résolu] problèmes pour utiliser saveXML avec indentation

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Coline Byczek
Messages : 6
Enregistré le : 03 Mar 2010, 10:23

[Résolu] problèmes pour utiliser saveXML avec indentation

Messagepar Coline Byczek » 12 Fév 2017, 17:00

Bonjour,

Pour les besoins d'un programme, je dois produire des fichiers XML.
Bien que j'aie beaucoup de mal à manier les différents objets de la librairie xml (xmldoc, xmlnode, xmlnodeset, etc.) j'ai pu écrire un code rudimentaire 'modifiant' un fichier de base, mais j'ai du mal à le sauvegarder avec indentation:

base <- xmlTreeParse("base.xml",useInternalNodes =T)

Suivi d'un code modifiant les valeurs dans les champs du fichier, sur cette base:
treex <- xmlClone(base)
nodex <- getNodeSet(treex,'//param[@nom="exemple"]')[[1]]
xmlValue(nodex ) <- 'new.value'


après quoi la sauvegarde:
saveXML(treex, "resultat.xml",indent=T)

Les fichiers produits sont corrects si je les charge dans R ou Internet Explorer, pas de souci.
En revanche, dans NotePad++, l'indentation, qui s'affichait correctement dans 'base.xml', disparaît dans 'resultat.xml'
>> J'ai du manquer une étape, genre rajouter \n en fin de ligne.
Pourriez-vous me dire, s'il vous plaît, si vous voyez des erreurs évidentes, ou m'indiquer une manière simple de régler mon problème...?

Merci par avance!
Coline

Coline Byczek
Messages : 6
Enregistré le : 03 Mar 2010, 10:23

Re: problèmes pour utiliser saveXML avec indentation

Messagepar Coline Byczek » 15 Fév 2017, 12:51

Re-bonjour,
J'ai trouvé la réponse sur un autre forum
http://r.789695.n4.nabble.com/saveXML-prefix-argument-td4678407.html
Il s'agit d'un bug de la fonction, et il existe une astuce qui fonctionne bien.

In the meantime, you can use
cat( saveXML( doc, encoding = "UTF-8", indent = TRUE), file = "bob.xml")
rather than
saveXML(doc, file = "bob.xml", encoding = "UTF-8", indent = TRUE)
i.e. move the file argument to cat().


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité