2017-03-20 1 views
0

so ist dies die plistgreifen Daten aus .plist ios in 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> 

, und ich will die .ipa URL zu ergreifen, um dies zu tun i simplexml

$xml=simplexml_load_string($plistString) 

jetzt verwende ich würde Zugriff es

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

aber es gibt 2 Strings gibt, wie ich die eine uRL zugreifen kann? jetzt ist das verwirrend für mich, bin ich sogar Zugriff auf die Plis in der richtigen Weise? soll ich jedes "dict" erwähnen, das es gibt?

+0

Sie können entweder die Einträge im dict durchlaufen, bis Sie einen Schlüssel finden, der zu "url" passt, und dann den nächsten "string" nehmen, oder Sie könnten 'xpath' verwenden. – jcaron

+0

Ich bin nicht so weit fortgeschritten, können Sie mir ein Codebeispiel geben? –

Antwort

0

Versuchen Sie folgendes:

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

no funciona :(te importa si hablamos por otro sitio? Lo necesito –

+0

Qué error te sale? – gmc

+0

null, por eso que el problema esta en oti sitio, contactame sin darte de alta aqui tlk.io/problemamplelplist –

0

XML suchen, sollten Sie XPath verwenden. Dieser Code sollte es tun:

<?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]; 

Also, was soll das heißen? Erstens:

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

Wir vergleichen child elements und ihre text content; Wir suchen nach einer <dict>, die <key>kind</key> und <string>software-package</string> enthält.

Dann:

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

Wir nehmen die <dict> Element, und suchen Sie nach einem Kind <key> Elemente mit "url", wie es Textinhalt ist, und erhalten das <string> Element following it.

Wir haben immer noch ein XML-Element an diesem Punkt, also verwenden wir typecasting, um es zu einem String zu bekommen.