变量$d
来自file_get_contents
函数到网址。
$answer = @new SimpleXMLElement($d);
以下是print_r($answer)
:
SimpleXMLElement Object
(
[Amount] => 2698
[Status] => OK
[State] => FL
[Country] => USA
)
如何检索每个元素的值并添加到数组中?我无法理解。
答案 0 :(得分:46)
在这个简单的情况下,类型转换也可以起作用:
$my_array = (array)$answer
答案 1 :(得分:37)
这应该有效:
$xml = simplexml_load_string($xmlstring);
$json = json_encode($xml);
$array = json_decode($json,TRUE);
答案 2 :(得分:10)
$answer
已经可以作为数组工作了。如果你想把它放在一个真正的数组中,你可以这样做,
$array = array();
foreach($answer as $k => $v) {
$array[$k] = $v;
}
答案 3 :(得分:5)
我遇到此函数的问题,因为当文本位于CDATA
标记之间时,将每个XML子类型转换为数组可能会出现问题。
我通过检查对数组进行类型转换的结果是否为空来修复此问题。如果是这样将它转换为字符串,您将获得正确的结果。
以下是我的修改版本CDATA
支持:
function SimpleXML2ArrayWithCDATASupport($xml)
{
$array = (array)$xml;
if (count($array) === 0) {
return (string)$xml;
}
foreach ($array as $key => $value) {
if (!is_object($value) || strpos(get_class($value), 'SimpleXML') === false) {
continue;
}
$array[$key] = SimpleXML2ArrayWithCDATASupport($value);
}
return $array;
}
答案 4 :(得分:0)
此函数将xml simpleXML递归解析为数组递归
function SimpleXML2Array($xml){
$array = (array)$xml;
//recursive Parser
foreach ($array as $key => $value){
if(strpos(get_class($value),"SimpleXML")!==false){
$array[$key] = SimpleXML2Array($value);
}
}
return $array;
}