我有一个XML文件,如下所示:
<Main>
<SubMain>
<First>10570</First>
<Time>07:33:51</Time>
<Result>500</Result>
<Taken>8:14</Taken>
<Results>
<int>100</int>
<int>100</int>
<int>85</int>
<int>100</int>
<int>100</int>
<int>100</int>
<int>100</int>
</Results>
</SubMain>
</Main>
我正在使用simplexml_load_file从文件加载到PHP:
$xml=simplexml_load_file("note.xml") or die("Error: Cannot create object");
foreach($xml->children() as $child)
{
echo $child->getName() . ": " . $child->First . $child->Time . $child->Taken ."<br>";
}
当我在结果行中加载时,我没有得到任何返回的值,如何进入该子数组?抱歉,这是一个愚蠢的问题,但是今天让我难过!
编辑: 删除了拼写错误,因为它在代码中不存在,还需要清除“ First”,“ Time”,“ Result”等正在返回期望值,这是我似乎无法从中提取数据的子数组(“ Results”)。
答案 0 :(得分:1)
使用SimpleXML时返回的所有值都是SimpleXMLElement
对象,可以将其转换为本机类型(例如var_dump($xml->SubMain->First);
)。它还实现了Traversable
,因此可以在foreach循环中使用。
要获取<int>
的值,您将需要遍历<Result>
的子级:
foreach ($xml->SubMain->Results->children() as $result) {
// $result is a SimpleXMLElement object, needs casting
var_dump(intval($result));
}
您也可以直接转换为数组,但请注意,您将拥有一个字符串数组:
$ints = (array) $xml->SubMain->Results->int;
var_dump($ints); // actually strings
因此您可以执行以下操作:
$ints = array_map('intval', (array) $xml->SubMain->Results->int);
var_dump($ints);