我不再是编码员了,上次我编写的C语言是在12年前。
我需要访问此XML中的FirstName:
<Customer>
<data_0>
<FirstName>Michael</FirstName>
</data_0>
<data_1>
<FirstName>Jack</FirstName>
</data_1>
<data_2>
<FirstName>Luke</FirstName>
</data_2>
</Customer>
奇怪的是,我的API调用返回的XML不是常规数组,而是显示在data_0,data_1,data_2等中。
我想知道在每个数据集中访问FirstName会有什么样的代码?
我希望以下代码能够正常运行但不会:
$xml = new SimpleXMLElement($results);
for ($i = 0; $i < 5; $i++)
{
$data="data_".$i;
echo $xml->Customer[0]->$data->FirstName;
}
提前致谢。
答案 0 :(得分:1)
替换
echo $xml->Customer[0]->$data->FirstName;
与
echo $xml->$data->FirstName;
在行动here中查看。
如果您print_r($xml)
,您会看到这是结构:
SimpleXMLElement Object
(
[data_0] => SimpleXMLElement Object
(
[FirstName] => Michael
)
[data_1] => SimpleXMLElement Object
(
[FirstName] => Jack
)
[data_2] => SimpleXMLElement Object
(
[FirstName] => Luke
)
)
所以你已经掌握了每个data_X
,你只需要得到它们。
您还可以使用foreach
循环元素,看看:
foreach($xml as $k => $v){
echo "[$k]: " . $v->FirstName . '<br>';
}
输出:
[data_0]: Michael
[data_1]: Jack
[data_2]: Luke
答案 1 :(得分:1)
使用SimpleXMLElement::xpath
函数的简单解决方案:
$xml = simplexml_load_string($results);
// "//../FirstName" - relative path to 'FirstName' items
foreach ($xml->xpath("//../FirstName") as $name) {
echo (string) $name . PHP_EOL;
}
输出:
Michael
Jack
Luke