• Resolvido EduAzevedo

    (@eduazevedo)


    Boa tarde, pessoal.

    Apesar de ser o meu terceiro projeto em wordpress nunca lidei com o problema atual. Preciso criar uma grade de programação utilizando um arquivo xml enviado pelo cliente. Tentei utilizar o plugin Advanced XML Reader, mas parece que ele causou uma instabilidade no banco que derrubou o site. Enfim, estou criando na mão mesmo e estou nesse ponto:

    <?php
    
    $xml = simplexml_load_file("http://" . $_SERVER["SERVER_NAME"] . "/wp-content/themes/twentyeleven/programacao/FTRAPTXML080320121603.xml");				
    
    ?>

    Quando tento imprimir os nodes utilizando:

    foreach($xml->channel as $canal)
    {
    echo $canal->scheduleDate;
    echo $canal->startTime;
    echo $canal->eventProfileName;
    echo $canal->eventProfileDuration;
    echo $canal->epWeekdayTime;
    echo "<br>";
    }

    Nada é exibido. Já tentei de várias formas exibir qualquer dado do array e não consegui.

    A única forma de exibir o conteúdo é imprimindo todo o conteúdo utilizando:

    print_r($xml)

    Sou novato em php e preciso muito da ajuda de vocês. Muito obrigado pela atenção.

Visualizando 4 respostas - 1 até 4 (de um total de 4)
  • Criador do tópico EduAzevedo

    (@eduazevedo)

    Tentei utilizando

    foreach($xml->children() as $child)
    {
    echo $child->getName() . ": " . $child . "<br />";
    }

    Mas ele só traz o resultado do getName() e em branco onde deveria ser o $child.

    Talvez o plugin Google Doc Embeder ?

    O que aparece no print_r($xml) ? Se aparece alguma coisa está funcionando, só não se está sabendo acessar os elementos. Qual o conteúdo do xml, poderia nos mostrar?! Dependendo da estrutura é preciso acessar o subitens de outra forma.

    Criador do tópico EduAzevedo

    (@eduazevedo)

    Obrigado pela ajuda, Diana.

    O conteúdo [reduzido] do xml é este:

    <?xml version="1.0" encoding="UTF-8"?>
    <ListingExport>
    <ListingExportItem>
    <channel>xxx</channel>
    <scheduleDate>02/01/12</scheduleDate>
    <ScheduleItens>
    <ScheduleItem>
    <startTime>07:00</startTime>
    <titleId>145757</titleId>
    <eventProfileId>991</eventProfileId>
    <eventProfileName>xxx</eventProfileName>
    <eventProfileDuration>00:30:00</eventProfileDuration>
    <eventProfileSynopsis></eventProfileSynopsis>
    <epClassification></epClassification>
    <epRestrictions></epRestrictions>
    <epWeekdayTime>Mon 07:00, Mon 09:30, Tue 07:00, Tue 09:30, Wed 07:00, Wed 09:30, Thu 07:00, Thu 09:30, Fri 07:00, Fri 09:30, Sat 09:30, Sun 11:00</epWeekdayTime>
    <titleName>xxx</titleName>
    <akaTitle>Axxx</akaTitle>
    <epgCompositeChild>No</epgCompositeChild>
    <premiere>false</premiere>
    <live>No</live>
    <subtitles>N</subtitles>
    <dubbed></dubbed>
    <titleCountry></titleCountry>
    <yearProduction>2009</yearProduction>
    <titleDuration>00:30:00</titleDuration>
    <colored>AC</colored>
    <director></director>
    <cast1></cast1>
    <cast2></cast2>
    <titleSynopsis></titleSynopsis>
    <titleGenre>Informar, A</titleGenre>
    <titleSubGenre>Informar, A</titleSubGenre>
    <versionCertification>Isento</versionCertification>
    <titleRestrictions></titleRestrictions>
    <episodeNumber>66</episodeNumber>
    <titleSeason></titleSeason>
    </ScheduleItem>
    </ScheduleItens>
    </ListingExportItem>
    </ListingExport>

    Coloquei xxx em algumas informações por que não sei que complicação posso ter com isso.

    Quando eu utilizo o print_r($xml) ele imprime, sim, o array.

    Eu consegui trabalhar com o xml utilizando DOM:

    $doc = new DOMDocument();
    $doc->load("http://" . $_SERVER["SERVER_NAME"] . "/wp-content/themes/twentyeleven/programacao/FTRAPTXML080320121603.xml");
    
    $books = $doc->getElementsByTagName( "ListingExportItem" );
    foreach( $books as $book )
    {
    $data = $book->getElementsByTagName( "scheduleDate" );
    $data = $data->item(0)->nodeValue;
    
    echo "<p><strong>Data:</strong> $data<br/>;

    Achei essa solução aqui: http://www.ibm.com/developerworks/br/library/os-xmldomphp/

    O problema certamente sou eu. Nunca trabalhei com isso e sou inexperiente em php.

    Olá,

    É um pouco confuso mesmo, recomendo fazer donwload da documentação do PHP, é ótima e contém vários exemplos. Inclusive de simplexml.

    Pode fazer direto tbm acho:

    foreach( $books as $book )
    {
    echo "<p><strong>Data:</strong>".$book->getElementsByTagName( "scheduleDate" )->item(0)->nodeValue."<br/>";
    }
Visualizando 4 respostas - 1 até 4 (de um total de 4)
  • O tópico ‘XML numa página estática’ está fechado para novas respostas.