2017-02-22 2 views
0

Ich versuche, eine Tabelle von Jobs auf meiner Website zu erstellen, ziehen Informationen aus einem XML-Feed habe ich Zugriff auf ... Ich habe verschiedene Beispiele online und Videos angeschaut, aber ich kann nicht scheinen um zu verstehen, wie es funktioniert. Mein XML-Feed gibt die folgende Knotenstruktur:Schleife xml-Knoten mit simplexml

<OutputVacancyAsXml> 
    <Vacancy> 
    <VacancyID></VacancyID> 
    <Job></Job> 
    <ClosingDate></ClosingDate> 
    </Vacancy> 
</OutputVacancyAsXml> 

ich Erfolg gehabt habe mit diesem Code durch ein Element ziehen:

<?php 
    $x = simplexml_load_file('https://www.octopus-hr.co.uk/recruit/OutputVacancyAsXml.aspx?CompanyID=400-73A3BCA1-D952-4BA6-AADB-D8BF3B495DF6'); 
    echo $x->Vacancy[5]->Job; 
?> 

Aber es foreach Umwandlung scheint zu sein, wo ich bin zu kämpfen . Heres der Code den ich bisher ohne Glück versucht habe;

<?php 
$html = ""; 
$url = "https://www.octopus-hr.co.uk/recruit/OutputVacancyAsXml.aspx?CompanyID=400-73A3BCA1-D952-4BA6-AADB-D8BF3B495DF6"; 
$xml = simplexml_load_file($url); 
for ($i = 0; $i < 10; $i++) { 
    $title = $xml->OutputVacancyAsXml->Vacancy[$i]->job; 
    $html .= "<p>$title</p>"; 

} 
echo $html; 
?> 

Dank all :)

Antwort

0

Ok sieht aus wie ich eine Lösung gefunden. Heres der Code, der für mich gearbeitet und es enthält ein wenig Code, der duplizierten zieht (es wurde jeder Punkt 4 mal Anzeige!) ...

<?php 


       $x = simplexml_load_file('https://www.octopus-hr.co.uk/recruit/OutputVacancyAsXml.aspx?CompanyID=400-73A3BCA1-D952-4BA6-AADB-D8BF3B495DF6'); 

      $num = count($x->Vacancy); 

      //echo "num is $num"; 

      $stopduplicates = array(); 

      for ($i = 0; $i < $num; $i++) { 


      $job = $x->Vacancy[$i]->Job; 
       $closingdate = $x->Vacancy[$i]->ClosingDate; 
       // http://stackoverflow.com/questions/416548/forcing-a-simplexml-object-to-a-string-regardless-of-context 
       $vacancyid = (string) $x->Vacancy[$i]->VacancyID; 


       if (!in_array($vacancyid, $stopduplicates)) { 




       echo ' 
       <tr class="job-row"> 
        <td class="job-cell">'.$job.'</td> 
        <td class="date-cell">'.$closingdate.'</td> 
        <td class="apply-cell"> 
        <a href="https://www.octopus-hr.co.uk/recruit/application/apply.aspx?cid=400-73A3BCA1-D952-4BA6-AADB-D8BF3B495DF6&VacancyID='.$vacancyid.'" target="_blank" class="btn btn-teal btn-md btn-job" role="button">Apply Here</a> 
        </td> 
       </tr>';  
       } 
      $stopduplicates[] = $vacancyid; 
      } //print_r($stopduplicates); 
      ?> 
0

vom

Hinweis documentation Genommen:

Eigenschaften ($ Filme-> Film in vorherigem Beispiel) nicht Arrays. Sie sind iterierbare und zugängliche Objekte.

Damit im Auge behalten können Sie einfach laufen über den Knoten mit foreach

$xml = simplexml_load_file($url); 
foreach ($xml->OutputVacancyAsXml->Vacancy as $vacanacy) 
{ 
    echo (string)$vacanacy->Job; // Echo out the Job Title 
} 
+0

Dank KhorneHoly - So habe ich es zusammen und kommen mit diesem, aber es scheint nicht zu funktionieren ... OutputVacancyAsXml-> Leerstand als $ vacancy) { echo (string) $ vacancy-> Job; // Echo out the Job Titel } ?> –

+0

Nicht sicher, ich sollte hinzufügen, dass dort KhorneHoly - Kein Code Bereich nach dem Aussehen davon ... –