пытаясь разобрать XML из URL, и это не будет работать - PullRequest
0 голосов
/ 10 апреля 2010

на этой странице показан файл xml, и я пытаюсь использовать simplexml для анализа данных и их распечатки. что мне не хватает? потому что все, что он делает, это показывает пустую страницу, когда я его запускаю.

<?php
$url = "http://api.scribd.com/api?method=docs.getList&api_key=somestring";

$xml = new SimpleXMLElement($url,NULL,true);

foreach($xml -> result as $value) {


    echo $value->doc_id."<br/>";
    echo $value->access_key."<br/>";
    echo $value->secret_password."<br/>";
    echo $value->title."<br/>";



}

?>

Ответы [ 3 ]

0 голосов
/ 10 апреля 2010

<result> не является потомком <rsp>, но <resultset>

foreach($xml->resultset->result as $value) {
0 голосов
/ 10 апреля 2010

Вы должны всегда называть свои переменные PHP после узла, который они представляют. В вашем случае корневым узлом является <rsp/>, поэтому переменная, которая содержит корневой узел, должна быть $rsp. Таким образом, вы можете легко распознать, что при попытке доступа к узлам <result/> произошла ошибка:

$rsp = simplexml_load_file($url);

foreach ($rsp->resultset->result as $result)
{
    echo $result->doc_id, "<br/>\n";
}

Там нет никакой двусмысленности.

<rsp>
    <resultset>
        <result />
    </resultset>
</rsp>

PHP:
$rsp->resultset->result

XPath:
/rsp/resultset/result

И не удивляюсь позже, что означает $value.

0 голосов
/ 10 апреля 2010

(Не совсем ответ, но ...) Добавьте некоторый шаблонный текст до, после и внутри цикла foreach, чтобы увидеть, какие биты выполняются и как часто выполняется цикл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...