Question XML ?

Plus d'informations
il y a 15 ans 9 mois #2555 par Patrick Berthon
XML ? a été créé par Patrick Berthon
Bonjour,

Je stocke des données dans un fichier xml (c'est très à la mode, il parait :) )

J'ai bien pigé le truc, ça marche pas trop mal.

Par contre, quand je n'ai pas encore de donnée, comment est-ce que je peux créer mon premier Node ? Comment lui donner sa structure ?

Pour l'instant, j'en suis réduit à créer un fichier à la main, avec un node vide, et pour ajouter des nodes, je fait un clone et je le rempli ...

Pas très élégant, je trouve.

Merci,

Zylwee

[EDIT]Si la réponse est dans le livre, n'hésitez pas à m'y renvoyer (avec le N° de page, plz, j'ai pas trouvé :D )<br><br>Message édité par: Zylwee, à: 6/07/08 20:57

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 9 mois #2558 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:XML ?
Salut,
Zylwee écrit:

c'est très à la mode, il parait

Ce n'est pas la panacée mais c'est bien plus qu'une mode.
Zylwee écrit:

Comment lui donner sa structure ?

Tu dois disposer d'un XSD, schéma xml contenant la structure du fichier XML.
Ex : powershell-scripting.com/index.php?optio...id=1688&catid=14
Zylwee écrit:

Pas très élégant, je trouve.

Il y a pas mal de monde qui procéde ainsi pour les données de tests. Tu peux utiliser des outils comme XMLSpy (www.altova.com/products/xmlspy/xml_editor.html ),xml notepad,visual studio express voir Word 2003 et >. Ensuite les outils ce n'est pas ce qui manque.

Message édité par: Laurent Dardenne, à: 7/07/08 13:28

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 9 mois #2559 par Patrick Berthon
Réponse de Patrick Berthon sur le sujet Re:XML ?
Salut,

(www.altova.com/products/xmlspy/xml_editor.html ),xml notepad,visual studio express voir Word 2003


Et dire que j'ai Visual Studio 2008 Pro (payé, si si, payé ! :D )

Merci beaucoup pour le tuyau.

Zylwee

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 9 mois #2570 par Patrick Berthon
Réponse de Patrick Berthon sur le sujet Re:XML ?
Salut,

Bon, maintenant que XMLSpy m'a donné les .xsd de mes .xml, comment puis-je dire à PowerShell de créer un node vide de la structure adéquate ?

Merci,

Zylwee

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 9 mois #2586 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:XML ?
Un exemple :
[code:1]
#Test-xml.ps1
#crée le fichier à minima
@\&quot;
&lt;?xml version=\&quot;1.0\&quot; encoding=\&quot;UTF-8\&quot; ?&gt;
&lt;Types&gt;
&lt;/Types&gt;
\&quot;@| out-file \&quot;$pwd\Test.xml\&quot; -encoding UTF8

#visu en texte
cat \&quot;$pwd\Test.xml\&quot;

#valide le fichier via IE
$Oxml=[xml](.\Test.xml)
#ou
[xml](.\Test.xml)

#crée une instance XMLDocument
[xml]$Oxml= get-content \&quot;$pwd\Test.xml\&quot;
$Oxml.gettype()
$Oxml
$Oxml.Types

#affiche les noeuds accessible via des propriétés
$Oxml|gm -membertype property

#Crée un noeud de type 'element' et ayant comme nom de balise \&quot;Type\&quot;
[XML.XmlNode]$NoeudTYPE=$Oxml.CreateNode(\&quot;element\&quot;,\&quot;Type\&quot;, \&quot;\&quot;«»)
#Récupére la racine
[XML.XmlElement] $root = $oxml.psbase.DocumentElement
#Ajoute le noeud 'sous' la racine
$root.AppendChild($NoeudTYPE)
#visu du nouveau noeud
$Oxml.Types

#Crée un élément ayant comme nom de balise \&quot;Name\&quot;
$ElementNAME = $Oxml.CreateElement(\&quot;Name\&quot;«»)
#Renseigne le contenu de l'élément
$ElementNAME.psbase.InnerText = \&quot;System.Array\&quot;
#Ajoute l'élément 'sous' le noeud \&quot;Type\&quot;
$NoeudTYPE.AppendChild($ElementNAME)
#Affiche le document XML
$oxml.psbase.OuterXml
#
# &lt;?xml version=\&quot;1.0\&quot; encoding=\&quot;UTF-8\&quot;?&gt;
# &lt;Types&gt;
# &lt;Type&gt;
# &lt;Name&gt;System.Array&lt;/Name&gt;
# &lt;/Type&gt;
# &lt;/Types&gt;

#Crée un noeud de type 'Commentaire' et ayant comme nom de balise \&quot;Type\&quot;
$Commentaire=$Oxml.CreateNode(\&quot;comment\&quot;,\&quot;\&quot;, \&quot;\&quot;«»)
$Commentaire.psbase.InnerText = \&quot;Ceci est un commentaire\&quot;
$NoeudTYPE.AppendChild($Commentaire)

$ElementMEMBERS=$Oxml.CreateNode(\&quot;element\&quot;,\&quot;Members\&quot;, \&quot;\&quot;«»)
#Ajoute le noeud 'sous' la racine
$NoeudTYPE.AppendChild($ElementMEMBERS)
#visu du nouveau noeud
$Oxml.Types
$oxml.psbase.OuterXml
# etc

#Sauve le fichier sur disque
$Oxml.save(\&quot;$pwd\Test2.xml\&quot;«»)
#Sauve le fichier sur la console
#plus lisible que $oxml.psbase.OuterXml
$Oxml.save([Console]::Out)
type \&quot;$pwd\Test2.xml\&quot;
[/code:1]

Je pensais que la manipulation de document XML était simplifié sous PowerShell elle l'est mais pas sur tous les aspects.

Quelques liens sur le sujet :
www.microsoft.com/technet/scriptcenter/t...winpsh/payette3.mspx
www.pluralsight.com/community/blogs/dan/...006/10/30/41434.aspx
www.pluralsight.com/community/blogs/dan/...006/11/25/42506.aspx
www.pluralsight.com/community/blogs/dan/...006/11/28/43561.aspx
www.clariusconsulting.net/blogs/kzu/arch...ShellNeedsXmlNs.aspx
www.pcpro.co.uk/realworld/104140/xml-through-powershell.html
blogs.msdn.com/powershell/archive/2007/0...e-xml-documents.aspx
blogs.msdn.com/dglover/archive/2007/06/2...ment-generation.aspx
www.hofernetworks.ch/powershell/tutorial...ell-read-write-save/
www.dreamincode.net/code/snippet2009.htm
blogs.technet.com/jamesone/archive/2008/...-it-s-all-about.aspx

[edit]
Voir aussi celui-ci
del.icio.us/powershell/XML

Message édité par: Laurent Dardenne, à: 11/07/08 18:30

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 9 mois #2587 par Patrick Berthon
Réponse de Patrick Berthon sur le sujet Re:XML ?
Salut,

Merci beaucoup pour cet exemple.

effectivement, je trouve que la manipulation est simplifiée par rapport, par exemple, au csharp.
D'un autre coté, j'ai peut-être cette impression parce que powershell semble faciliter à peu près tout ce qu'il touche :)

En fait, soyons honnête, je me demandais si il n'y avait pas un truc du style :
[xml]$a = XsdToXml \&quot;c:/temp/test.xsd\&quot;
qui créerait un fichier xml vide.

Merci

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.084 secondes
Propulsé par Kunena