Question Manipuler du xml pour obtenir des infos

Plus d'informations
il y a 14 ans 8 mois #10152 par Gabriel
bonjour

je recupere une string XML de l'ad (dans une prorpiete de d'un objet pour office communicator) et j'aimerais recuperer une valeur

voila la chaine xml en question (mise en forme pour etre lisible, sionon c'est une seule ligne
[code:1]<instance>
<property name=\"Name\"><![CDATA[test]]></property>
<property name=\"AllowIPVideo\"><![CDATA[false]]></property>
<property name=\"AllowIPAudio\"><![CDATA[false]]></property>
<property name=\"ColorDepth\"><![CDATA[256]]></property>
<property name=\"AllowAppSharingForExternalMeeting\"><![CDATA[SingleApplication]]></property>
<property name=\"RetainPPTForExternalMeeting\"><![CDATA[false]]></property>
<property name=\"MeetingSize\"><![CDATA[35]]></property>
<property name=\"EnableDataCollaboration\"><![CDATA[false]]></property>
<property name=\"AllowPresenterToRecord\"><![CDATA[false]]></property>
<property name=\"AllowPresenterToDelegateRecording\"><![CDATA[false]]></property>
<property name=\"EnablePSTNConferencing\"><![CDATA[false]]></property>
<property name=\"TrustedConferencingPinRequired\"><![CDATA[false]]></property>
<property name=\"EnableAppDesktopSharing\"><![CDATA[false]]></property>
</instance>[/code:1]

j'ai essayer de la mettre dans une variable en specifiant que c'est du xml
[code:1]
[xml]$xml = get-content toto.xml[/code:1]

$xml a une propriete \"instance\" si je fait $xml.instance je vois alors une propriete \"property\" contenant l'ensemble des valeurs property mais pas moyen de chopper l'info qui m'interesse : EnableAppDesktopSharing = False...

Merci d'avance.<br><br>Message édité par: tonic8, à: 30/08/11 17:08

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

Plus d'informations
il y a 14 ans 8 mois #10154 par Arthur
Salut

J'ai fait un truc similaire en C# que j'ai mis en powershell:

[code:1]$string = '
&lt;instance&gt;
&lt;property name=\&quot;Name\&quot;&gt;&lt;![CDATA[test]]&gt;&lt;/property&gt;
&lt;property name=\&quot;AllowIPVideo\&quot;&gt;&lt;![CDATA[false]]&gt;&lt;/property&gt;
&lt;property name=\&quot;AllowIPAudio\&quot;&gt;&lt;![CDATA[false]]&gt;&lt;/property&gt;
&lt;property name=\&quot;ColorDepth\&quot;&gt;&lt;![CDATA[256]]&gt;&lt;/property&gt;
&lt;property name=\&quot;AllowAppSharingForExternalMeeting\&quot;&gt;&lt;![CDATA[SingleApplication]]&gt;&lt;/property&gt;
&lt;property name=\&quot;RetainPPTForExternalMeeting\&quot;&gt;&lt;![CDATA[false]]&gt;&lt;/property&gt;
&lt;property name=\&quot;MeetingSize\&quot;&gt;&lt;![CDATA[35]]&gt;&lt;/property&gt;
&lt;property name=\&quot;EnableDataCollaboration\&quot;&gt;&lt;![CDATA[false]]&gt;&lt;/property&gt;
&lt;property name=\&quot;AllowPresenterToRecord\&quot;&gt;&lt;![CDATA[false]]&gt;&lt;/property&gt;
&lt;property name=\&quot;AllowPresenterToDelegateRecording\&quot;&gt;&lt;![CDATA[false]]&gt;&lt;/property&gt;
&lt;property name=\&quot;EnablePSTNConferencing\&quot;&gt;&lt;![CDATA[false]]&gt;&lt;/property&gt;
&lt;property name=\&quot;TrustedConferencingPinRequired\&quot;&gt;&lt;![CDATA[false]]&gt;&lt;/property&gt;
&lt;property name=\&quot;EnableAppDesktopSharing\&quot;&gt;&lt;![CDATA[false]]&gt;&lt;/property&gt;
&lt;/instance&gt; '
$XML = New-Object \&quot;System.Xml.XMLDocument\&quot;
$XML.LoadXml($string)
$node=$XML.SelectNodes(\&quot;//property[@name=\&quot;\&quot;EnableAppDesktopSharing\&quot;\&quot;]\&quot;«»)
($node.Item(0)).name
($node.Item(0)).'#cdata-section'[/code:1]<br><br>Message édité par: bilbao, à: 30/08/11 18:52

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

Plus d'informations
il y a 14 ans 8 mois #10155 par Arthur
C'est assez marrant d’ailleurs de voir que powershell bug un peu, avec la méthode \&quot;Get-Member\&quot; sur $node on obtient un \&quot;XmlElement\&quot; alors que la méthode \&quot;SelectNodes\&quot; retourne un objet de type \&quot;XmlNodeList\&quot; et même en forçant le type sur \&quot;XmlNodeList\&quot; il met toujours \&quot;XmlElement\&quot;, pourtant on ne peux utiliser que les méthodes de \&quot;XmlNodeList\&quot;.

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

Plus d'informations
il y a 14 ans 8 mois #10156 par xyz
Salut,
on peut simplifier, tout du moins réduire la saisie :
[code:1]
$XML = New-Object \&quot;System.Xml.XMLDocument\&quot;
$XML.LoadXml($string)
[/code:1]
en
[code:1]
[xml]$XML=$string
[/code:1]

bilbao écrit:

C'est assez marrant d’ailleurs de voir que powershell bug un peu

Je ne pense pas que ce soit un bug :
[code:1]
$node|gm
gm -InputObject $node

#d'où
$node=$XML.SelectNodes('//property[@name=\&quot;EnableAppDesktopSharing\&quot;]')|% {$}
#POUR cet exemple on récupère 1 seul élément
$node.name
$node.'#cdata-section'
[/code:1]<br><br>Message édité par: Laurent Dardenne, à: 31/08/11 21:31

Tutoriels PowerShell

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

Plus d'informations
il y a 14 ans 8 mois #10158 par Gabriel
Bilbao/Laurent

merchi, je vais bien m'amuser :) ca debloque un poil ma situation...

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

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