Question
[XML] Modification de valeurs XML
- Christophe Bach
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 6
- Remerciements reçus 0
il y a 13 ans 2 semaines #14195
par Christophe Bach
[XML] Modification de valeurs XML a été créé par Christophe Bach
Bonjour à tous,
J'ai un petit problème avec l’édition de fichiers XML.
Je vais vous présenter le fichier XML et ensuite le code PowerShell.
Le but est de modifier des valeurs, dans le cas présent, le nom d'un serveur dans un fichier XML.
(Je m'excuse mais je n'ai pas le bon vocabulaire pour la gestion du XML et je suis encore nouveau dans le PowerShell)
Server.xml
[code:1]<objs>
<servers>
<Server>
<Id>1</Id>
<Name>Server-01</Name>
</Server>
<Server>
<Id>2</Id>
<Name>Server-02</Name>
</Server>
<Id>3</Id>
<Name>Server-test-03</Name>
</Server>
</servers>
</objs>[/code:1]
Script.ps1
[code:1]
$xml = New-Object -TypeName XML
$xml.Load( \"C:\Scripts\Xml\Server.xml\" )
$xml.objs.servers.server.Name[2] = \"Server-03\" ##Ne fonctionne pas, car la variable ne prend pas la valeur.
$xml.Save( \"C:\Scripts\Xml\Server.xml\" )
[/code:1]
J'ai testé pas mal de combinaison mais là, je sèche.
PS : Si vous avez de la bonne documentation sur le sujet, je suis preneur ^^.
Merci d'avance.
Message édité par: Christophe Bach, à: 6/03/13 10:31<br><br>Message édité par: Christophe Bach, à: 6/03/13 10:32
J'ai un petit problème avec l’édition de fichiers XML.
Je vais vous présenter le fichier XML et ensuite le code PowerShell.
Le but est de modifier des valeurs, dans le cas présent, le nom d'un serveur dans un fichier XML.
(Je m'excuse mais je n'ai pas le bon vocabulaire pour la gestion du XML et je suis encore nouveau dans le PowerShell)
Server.xml
[code:1]<objs>
<servers>
<Server>
<Id>1</Id>
<Name>Server-01</Name>
</Server>
<Server>
<Id>2</Id>
<Name>Server-02</Name>
</Server>
<Id>3</Id>
<Name>Server-test-03</Name>
</Server>
</servers>
</objs>[/code:1]
Script.ps1
[code:1]
$xml = New-Object -TypeName XML
$xml.Load( \"C:\Scripts\Xml\Server.xml\" )
$xml.objs.servers.server.Name[2] = \"Server-03\" ##Ne fonctionne pas, car la variable ne prend pas la valeur.
$xml.Save( \"C:\Scripts\Xml\Server.xml\" )
[/code:1]
J'ai testé pas mal de combinaison mais là, je sèche.
PS : Si vous avez de la bonne documentation sur le sujet, je suis preneur ^^.
Merci d'avance.
Message édité par: Christophe Bach, à: 6/03/13 10:31<br><br>Message édité par: Christophe Bach, à: 6/03/13 10:32
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 13 ans 2 semaines #14197
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet Re:[XML] Modification de valeurs XML
Bonjour Christophe,
A mon avis plutôt que de se compliquer la vie à manipuler du XML, je considérerais déjà le fait que ton fichier est un fichier texte. Ainsi il est facile de remplacer une valeur par une autre...
Exemple:
[code:1]
# Chargement du fichier XML
$contenu = Get-Content ./config.xml
# Remplacement d'une valeur par une autre
$contenu = $contenu -replace 'Server-01','Server-1001'
# Remplacement du fichier XML
$contenu | Out-file ./config.xml -Encoding Unicode
[/code:1]
Attention à l'encodage choisi car les fichier XML sont très sensibles à ce point. En effet, un fichier XML qui se respecte possède une ligne d'entête indiquant son encodage.
Arnaud
A mon avis plutôt que de se compliquer la vie à manipuler du XML, je considérerais déjà le fait que ton fichier est un fichier texte. Ainsi il est facile de remplacer une valeur par une autre...
Exemple:
[code:1]
# Chargement du fichier XML
$contenu = Get-Content ./config.xml
# Remplacement d'une valeur par une autre
$contenu = $contenu -replace 'Server-01','Server-1001'
# Remplacement du fichier XML
$contenu | Out-file ./config.xml -Encoding Unicode
[/code:1]
Attention à l'encodage choisi car les fichier XML sont très sensibles à ce point. En effet, un fichier XML qui se respecte possède une ligne d'entête indiquant son encodage.
Arnaud
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- Christophe Bach
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 6
- Remerciements reçus 0
il y a 13 ans 2 semaines #14200
par Christophe Bach
Réponse de Christophe Bach sur le sujet Re:[XML] Modification de valeurs XML
Bonjour Arnaud,
je voulais juste citer un exemple car mon XLM fait plus de 300 lignes avec des valeurs dans tout les sens ^^'. Et le Script PowerShell fait des changements de valeur selon moult conditions.
Je voudrais le structurer correctement, car ce n'est pas très corporate.
Je suis un \"noob\" en XML ^^.
Pour l'encodage j'ai choisie, un peu par défaut l'UTF-8 :
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
PS : La gestion en fichier texte marche parfaitement, mais est-ce la façon la plus \"propre\" de le faire ? (je suis chiant mais j'aime apprendre et découvrir ^^)
je voulais juste citer un exemple car mon XLM fait plus de 300 lignes avec des valeurs dans tout les sens ^^'. Et le Script PowerShell fait des changements de valeur selon moult conditions.
Je voudrais le structurer correctement, car ce n'est pas très corporate.
Je suis un \"noob\" en XML ^^.
Pour l'encodage j'ai choisie, un peu par défaut l'UTF-8 :
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
PS : La gestion en fichier texte marche parfaitement, mais est-ce la façon la plus \"propre\" de le faire ? (je suis chiant mais j'aime apprendre et découvrir ^^)
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 13 ans 2 semaines #14201
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet Re:[XML] Modification de valeurs XML
Si tu utilises de bonnes expressions régulières pour capturer la chaîne à modifier il n'y a pas de problème.
Ceci étant pour tout problème il n'y a jamais qu'une seule solution. Mais je te l'accorde manipuler directement le XML en mémoire sera plus joli...
Après il faut trouver le bon compromis entre le temps passé à résoudre un problème et la beauté de la solution
.
Arnaud
Ceci étant pour tout problème il n'y a jamais qu'une seule solution. Mais je te l'accorde manipuler directement le XML en mémoire sera plus joli...
Après il faut trouver le bon compromis entre le temps passé à résoudre un problème et la beauté de la solution
Arnaud
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- Christophe Bach
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 6
- Remerciements reçus 0
il y a 13 ans 2 semaines #14217
par Christophe Bach
Réponse de Christophe Bach sur le sujet Re:[XML] Modification de valeurs XML
Merci en tout cas pour ton aide, j'ai réussie à gérer mon problème 
Mais je vais quand même chercher comment faire une gestion du XML (j'aime pas rester sur un demi victoire ^^)
Have a nice day
Mais je vais quand même chercher comment faire une gestion du XML (j'aime pas rester sur un demi victoire ^^)
Have a nice day
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.071 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [XML] Modification de valeurs XML