Voici un bit par exemple à partir du fichier xml:paires clé/valeur de xml-style plist simplexml en php
<array>
<dict>
<key>Name</key>
<string>Joe Smith</string>
<key>Type</key>
<string>Profile</string>
<key>Role</key>
<string>User</string>
<key>Some Number</key>
<integer>1</integer>
<key>Some Boolean</key>
<true/>
</dict>
</array>
J'ai deux objectifs distincts. La première consiste à extraire un tableau à partir du noeud dict
qui ressemblerait à ceci:
[Name] => Joe Smith
[Type] => Profile
[Role] => User
[Some Number] => 1
[Some Boolean] => true
Ce n'est pas essentiel que le booléen inclus, donc si cela ajoute à la complexité trop, je préfère simplement savoir comment faire face à les autres pour le moment.
Le deuxième objectif est de pouvoir sélectionner le nœud de valeur (<string>
, <integer>
, etc.) afin que je puisse changer la valeur. Je sais que je devrais le sélectionner en fonction de la valeur de texte de l'élément clé précédent.
Je pense que le XPath devrait fonctionner:
//key[.=$keyname]/following-sibling[1]
Mais je ne suis pas sûr. Fondamentalement, tout ce système que Apple utilise semble logique, mais totalement contraire à ma compréhension de la façon dont le langage XML est censé fonctionner. Si je courais le monde, le XML original ressemblerait plus:
<dict type="array">
<value key="Name" type="string">Joe Smith</value>
<value key="Type" type="string">Profile</value>
<value key="Role type="string">User</value>
<value key="Some Number" type="integer">1</value>
<value key="Some Boolean" type="boolean">true</value>
</dict>
Mais comme il est assez logique, je me demande si je manque une certaine façon évidente de la manipuler.