我一直在使用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