如何从此URL检索特定的xml数据?

时间:2014-01-17 15:37:13

标签: php xml-parsing

我需要从this URL

中检索Identificador值

我尝试了几种方法,但到目前为止都没有成功。

以下是代码:

function readxml($courseid,$datayear,$dataperiod,$datasemester){
    if ($dataperiod == 'a')
        $datasemester='1';

    $xmlUrl = 'https://clip.unl.pt/sprs?lg=pt&year=' . $datayear  .
        '&uo=97747&srv=rsu&p=' . $datasemester .
        '&tp=' . $dataperiod .
        '&md=3&rs=' . $courseid .
        '&it=1030123459';

    if (!function_exists('download_file_content')){
        function download_file_content($xmlStr){
            return implode( "",file($xmlStr));
        }
    }
    $xmlStr=download_file_content($xmlUrl);

    $xmlObj=new SimpleXMLElement(file_get_contents($xmlStr));

    foreach ($xmlObj->unidade_curricular->inscritos->aluno as $aluno) {
        $result=($aluno->identificador)."<br/>";
        echo $result;
    }
}

如果download_file_content不在if语句中,则无法识别Warning: file_get_contents(<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <edicao_lectiva nome="Algoritmos e Estruturas de Dados"> <ano>2008</ano> <lingua>pt</lingua> <tipo_de_periodo_lectivo>s</tipo_de_periodo_lectivo> <periodo_lectivo>1</periodo_lectivo> <unidade_curricular nome="Algoritmos e Estruturas de Dados"> <codigo>8145</codigo> <unidade_organica>Faculdade de Ciências e Tecnologia</unidade_organica> <departamento>Departamento de Informática</departamento> <grupodisciplinas>Ciência e Tecnologia da Programação</grupodisciplinas> <inscritos> <aluno numero="24250"> <nome>Adriano Constantino de Sousa Strumbudakis</nome> <identificador>a.strumbudakis</identificador> <codigo& in C:\moodle25\server\moodle\local\ecoclipaluno\somefile.php on line 106 Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in C:\moodle25\server\moodle\local\ecoclipaluno\somefile.php:106 Stack trace: #0 C:\moodle25\server\moodle\local\ecoclipaluno\somefile.php(106): SimpleXMLElement->__construct('') #1 C:\moodle25\server\moodle\local\ecoclipaluno\somefile.php(137): readxml('8145', '2008', 's', '1') #2 C:\moodle25\server\moodle\local\ecoclipaluno\somefile.php(145): xpto('8145', '2008', 's', '1') #3 {main} thrown in C:\moodle25\server\moodle\local\ecoclipaluno\somefile.php on line 106 。目前,我得到的错误是:

{{1}}

我做错了什么?

我现在注意到我的帖子丢失了一些信息,因为我使用标签来说明我想要提取的值。

1 个答案:

答案 0 :(得分:0)

像这样:

<pre>
<?php

$xml = simplexml_load_string(file_get_contents('https://clip.unl.pt/sprs?lg=pt&year=2008&uo=97747&srv=rsu&p=1&tp=s&md=3&rs=8145&it=1030123459'));

print_r($xml);

?>
</pre>

输出:

SimpleXMLElement Object
(
    [@attributes] => Array
        (
            [nome] => Algoritmos e Estruturas de Dados
        )

    [ano] => 2008
    [lingua] => pt
    [tipo_de_periodo_lectivo] => s
    [periodo_lectivo] => 1

    ... snipped