2017-04-08 44 views
0

我一直在使用simpleXML,並且我有一個XML文件和一個Son文件,用於保存數據。如果我這樣做:如何防止SimpleXML在PHP中創建「0」對象

$TBTweakedAddInfo[] = array(
         'test' => $xmlAddPlist->dict->array->dict->array->dict[0]->string[1], 
        ); 

,後來轉換數組到JSON我得到這個:

{ 
    "test": { 
     "0": "value from the XML" 
    } 
}, 

我怎麼能作出這樣是

{ 
    "test":"value from plist", 
} 

這樣下去bugginng我,因爲如果我提取數據讓我們說一個頁面,我將不得不做

echo $json->test->{'0'} 

這是可怕的

這是xml文件。我正確地抓住了這個值,但是用那個惱人的「0」對象。

<?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>items</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/58e5bd080ba06228677306a1.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> 
+0

向我們展示了XML,沒準你缺少某種程度它 – RiggsFolly

+0

讓利我編輯帖子 –

+0

該XML肯定無法正常形成 – RiggsFolly

回答

-1

當您不確定您正在使用的數據結構,剛開始用print_r()和回顧一下,告訴你..

$xml = '<?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>items</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/58e5bd080ba06228677306a1.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>'; 

$pxml = new SimpleXMLElement($xml); 
print_r($pxml); 

結果:

SimpleXMLElement Object 
(
    [@attributes] => Array 
     (
      [version] => 1.0 
     ) 

    [dict] => SimpleXMLElement Object 
     (
      [key] => items 
      [array] => SimpleXMLElement Object 
       (
        [dict] => SimpleXMLElement Object 
         (
          [key] => Array 
           (
            [0] => assets 
            [1] => metadata 
           ) 

          [array] => SimpleXMLElement Object 
           (
            [dict] => Array 
             (
              [0] => SimpleXMLElement Object 
               (
                [key] => Array 
                 (
                  [0] => kind 
                  [1] => url 
                 ) 

                [string] => Array 
                 (
                  [0] => software-package 
                  [1] => http://down.weapp.com/apps/zb/002/43/12/21/58e5bd080ba06228677306a1.ipa 
                 ) 

               ) 

              [1] => SimpleXMLElement Object 
               (
                [key] => Array 
                 (
                  [0] => kind 
                  [1] => needs-shine 
                  [2] => url 
                 ) 

                [string] => Array 
                 (
                  [0] => display-image 
                  [1] => http://www.weapp.com/picture/app_ios/cn/002/43/12/21/57x57bb.png 
                 ) 

                [true] => SimpleXMLElement Object 
                 (
                 ) 

               ) 

              [2] => SimpleXMLElement Object 
               (
                [key] => Array 
                 (
                  [0] => kind 
                  [1] => needs-shine 
                  [2] => url 
                 ) 

                [string] => Array 
                 (
                  [0] => full-size-image 
                  [1] => http://www.weapp.com/picture/app_ios/cn/002/43/12/21/512x512bb.png 
                 ) 

                [true] => SimpleXMLElement Object 
                 (
                 ) 

               ) 

             ) 

           ) 

          [dict] => SimpleXMLElement Object 
           (
            [key] => Array 
             (
              [0] => bundle-identifier 
              [1] => bundle-version 
              [2] => kind 
              [3] => title 
             ) 

            [string] => Array 
             (
              [0] => com.xiaoji.gamecenter 
              [1] => 1.5.2 
              [2] => software 
              [3] => 小雞模擬器 
             ) 

           ) 

         ) 

       ) 

     ) 

) 

所以現在你可以看到你的問題的答案是

echo $pxml->dict->array->dict->array->dict[0]->string[0].PHP_EOL; 
echo $pxml->dict->array->dict->array->dict[0]->string[1].PHP_EOL; 

結果

software-package 
http://down.weapp.com/apps/zb/002/43/12/21/58e5bd080ba06228677306a1.ipa 

或者在這個級別打印所有string項目

foreach ($pxml->dict->array->dict->array->dict as $obj) { 
    foreach ($obj->string as $str) { 
     echo $str . PHP_EOL; 
    } 
} 

成績

software-package 
http://down.weapp.com/apps/zb/002/43/12/21/58e5bd080ba06228677306a1.ipa 
display-image 
http://www.weapp.com/picture/app_ios/cn/002/43/12/21/57x57bb.png 
full-size-image 
http://www.weapp.com/picture/app_ios/cn/002/43/12/21/512x512bb.png 
+0

我的問題是,嘗試使該字符串的對象中的值,在json>「key」=>字符串「,你會看到它創建一個0對象作爲」鍵「值 –

+0

你得到了數字鍵,因爲你沒有得到正確的數據。現在,當你得到正確的數據,它應該工作 – RiggsFolly

+0

爲什麼downvote? – RiggsFolly