我有一个codeigniter应用程序,可以查询api并获取一个simplexml对象。我已经从simplexml对象硬编码了我想要的值,但后来发现对象的结构并不总是相同的,所以我不能使用强制转换来获取我需要的值。
我是否可以使用类似array_search的函数,因此我可以使用" classid"获得价值?以下是simplexml对象的示例:
[Package] => SimpleXMLElement Object
(
[@attributes] => Array
(
[ID] => e981b9a72cd305c7d97cc530ef9b3015
)
[Postage] => Array
(
[0] => SimpleXMLElement Object
(
[@attributes] => Array
(
[CLASSID] => 3
)
[MailService] => Express Mail<sup>®</sup>
[Rate] => 57.60
)
[1] => SimpleXMLElement Object
(
[@attributes] => Array
(
[CLASSID] => 2
)
[MailService] => Express Mail<sup>®</sup> Hold For Pickup
[Rate] => 57.60
)
[2] => SimpleXMLElement Object
(
[@attributes] => Array
(
[CLASSID] => 55
)
[MailService] => Express Mail<sup>®</sup> Flat Rate Boxes
[Rate] => 39.95
)
我用它来获取[Rate]值:
$usps->Package->Postage[0]->Rate
问题是我需要使用[CLASSID],因为数字键(?)中的数据会发生变化,这是一致的。
答案 0 :(得分:0)
这应该可行,但如果没有原始XML,我无法测试它:
$rates = array();
foreach ($usps->Package->Postage as $postage)
$rates[$postage->attributes()->CLASSID] = $postage->Rate;
答案 1 :(得分:0)
使用XPath
您不仅可以搜索特定元素,还可以使用各种轴进行各种疯狂搜索。