Извлечение XML с помощью PHP - PullRequest
0 голосов
/ 18 февраля 2010

Я знаю, как использовать simplexml_load_file для получения результатов XML, если формат XML

<bowlcontents>
   <banana>yellow</banana>
    <apple>red</apple>
</bowlcontents>

Однако у меня есть некоторый код в формате

<bowlcontents>
  <fruit type="banana" skin="yellow" />
  <fruit type="apple" skin="red" />
</bowlcontents>

и я хочу манипулировать им так же, как в первом примере. Как бы я это сделал?

РЕДАКТИРОВАТЬ: Это именно то, что я хочу сделать, но код ниже не работает.

<?php
$url = "http://worldsfirstfruitAPI.com/fruit.xml";

    $xml = (simplexml_load_file($url));


    $results = array();
    foreach ($xml->bowlcontents->fruit as $fruit) {
        $results[] = array(
            $fruit['type'] => $fruit['skin'],
            );
    }
    return $results;
}

?>

Итак, в конце я бы хотел получить массив, ключ = значение:

банан = желтый

яблоко = красный

...

Надеюсь, это прояснит. Спасибо!

1 Ответ

6 голосов
/ 18 февраля 2010

Согласно руководству PHP , доступ к атрибутам осуществляется с использованием записи массива:

$bowlcontents->fruit['type'];

Если подумать, вы не сказали в своем вопросе, в чем была ваша проблема. Если речь идет об итерации по узлам, вы можете сделать это, используя foreach.

/*
$bowlcontents = simplexml_load_string(
    '<bowlcontents>
      <fruit type="banana" skin="yellow" />
      <fruit type="apple" skin="red" />
    </bowlcontents>'
);
*/

$url = "http://worldsfirstfruitAPI.com/fruit.xml";
$bowlcontents = simplexml_load_file($url);

foreach ($bowlcontents->fruit as $fruit)
{
    echo $fruit['type'], "'s skin is ", $fruit['skin'], "<br/>\n";
}
...