2017-03-20 2 views
0

c'est donc le plistdonnées d'appui de ios .plist en PHP

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>New item</key> 
    <array> 
     <dict> 
      <key>assets</key> 
      <array> 
       <dict> 
        <key>kind</key> 
        <string>software-package</string> 
        <key>url</key> 
        <string>http://down.weapp.com/apps/zb/002/43/12/21/58cae8840ba0628e304b1118.ipa</string> 
       </dict> 
       <dict> 
        <key>kind</key> 
        <string>display-image</string> 
        <key>needs-shine</key> 
        <true/> 
        <key>url</key> 
        <string>http://www.weapp.com/picture/app_ios/cn/002/43/12/21/57x57bb.png</string> 
       </dict> 
       <dict> 
        <key>kind</key> 
        <string>full-size-image</string> 
        <key>needs-shine</key> 
        <true/> 
        <key>url</key> 
        <string>http://www.weapp.com/picture/app_ios/cn/002/43/12/21/512x512bb.png</string> 
       </dict> 
      </array> 
      <key>metadata</key> 
      <dict> 
       <key>bundle-identifier</key> 
       <string>com.xiaoji.gamecenter</string> 
       <key>bundle-version</key> 
       <string>1.5.2</string> 
       <key>kind</key> 
       <string>software</string> 
       <key>title</key> 
       <string>小鸡模拟器</string> 
      </dict> 
     </dict> 
    </array> 
</dict> 
</plist> 

et je veux saisir l'URL .ipa, pour ce faire, je suis en utilisant simplexml

$xml=simplexml_load_string($plistString) 

maintenant je accéder à faire

$xmlPlist->dict->array[0]->string, 

mais il y a 2 chaînes là-bas, comment puis-je accéder à l'url? maintenant c'est déroutant pour moi, suis-je même accéder au plis de la bonne façon? devrais-je mentionner chaque "dict" il y a?

+0

Vous pouvez parcourir les entrées de la dict jusqu'à ce que vous trouviez une «clé» correspondant 'url', puis prendre la' chaîne' suivante, ou utiliser 'xpath'. – jcaron

+0

Je ne suis pas si avancé, pouvez-vous me donner un exemple de code? –

Répondre

0

Essayez ceci:

echo $xml->dict->array->dict->array->dict->string[1]; 
+0

Aucune fonction :(t'importe pour l'instant pour rien d'autre –

+0

Qué error te sale? – gmc

+0

null, pour être sûr que le problème soit résolu, contactez-nous pour en savoir plus sur tlk.io/problemadelplist –

0

Pour rechercher XML, vous devez utiliser XPath. Ce code devrait faire l'affaire:

<?php 
$xml = new SimpleXMLElement($plistString); 
$result = $xml->xpath('//dict[./key/text()="kind" and ./string/text()="software-package"]/key[text()="url"]/following-sibling::string'); 
$url = (string)$result[0]; 

Alors qu'est-ce que ça veut dire? Tout d'abord:

dict[./key/text()="kind" and ./string/text()="software-package"] 

Nous comparons child elements et leur text content; nous cherchons un <dict> qui contient et <string>software-package</string>.

Puis:

/key[text()="url"]/following-sibling::string 

Nous prenons cet élément <dict>, et rechercher un élément enfant <key> avec « url » comme il est le contenu du texte et obtenir l'élément <string>following it.

Nous avons toujours un élément XML à ce stade, donc nous utilisons typecasting pour l'obtenir à une chaîne.