我有一个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>";
}
当我在Results行中加载时,我没有得到任何返回的值,我该如何进入这个子数组?如果这是一个愚蠢的问题,我很抱歉,但今天我被难住了!
编辑:删除了拼写错误,因为它在代码中不存在,还需要清除First、Time、Result等返回的是预期值,这是我似乎无法从中提取数据的子数组(Results(。
使用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);