使用PHP SimpleXML处理XML时遇到问题

时间:2011-03-22 23:41:55

标签: simplexml

http://pastie.org/1701923以下是从我查询邮政编码的API返回的XML。

我想从每个条目中提取数据并将其直接循环或将其放入我可以循环的数组中。我似乎无法做对。这是我使用的最新代码:

$xml = new SimpleXMLElement($results);
foreach($xml->zipcoderadius->zipcodes as $loc) {
    $codes[] = (string)$loc['zipcode'];
}
print_r($codes);
die();

($ results是CURL返回的XML)

输出的是Array([0] => [1] => [2] => [3] => [4] =>)

2 个答案:

答案 0 :(得分:0)

我认为这是一个字符串(zipcode)。尝试不带字符串

答案 1 :(得分:0)

我不确定您是否正确处理了邮政编码。对我来说,假设您之前已将cURL结果存储在$xmlStr中,以下情况有效。

$push = array();
$foo = simplexml_load_string($xmlStr);
foreach($foo->zipcoderadius->zipcodes->id as $bar) {
    array_push($push, (string)$bar);
}
print_r($push);

导致以下输出:

Array
(
    [0] => 75969
    [1] => 75970
    [2] => 75971
)

顺便说一下:SimpleXML对象如下所示:

object(SimpleXMLElement)#1 (1) {
  ["zipcoderadius"]=>
  object(SimpleXMLElement)#4 (1) {
    ["zipcodes"]=>
    object(SimpleXMLElement)#3 (32) {
      ["id"]=>
      array(3) {
        [0]=>
        string(5) "75969"
        [1]=>
        string(5) "75970"
        [2]=>
        string(5) "75971"
      }
      ["zipcode"]=>
      array(3) {
        [0]=>
        string(5) "94945"
        [1]=>
        string(5) "94945"
        [2]=>
        string(5) "94945"
      }
...