如何防止 SimpleXML 在 PHP 中创建"0"对象



我一直在使用simpleXML,我有一个XML文件和一个Son文件,我想在其中保存数据。 如果我这样做:

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

然后将数组转换为 json,我得到这个:

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

我怎样才能做到这一点

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

这让我一直困扰着我,因为如果我要提取数据来假设一个页面,我将不得不这样做

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>

当您不确定正在使用的数据结构时,只需从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

最新更新