2017-02-22 28 views
0

Im пытается создать таблицу заданий на моем сайте, вытаскивая информацию из XML-канала. У меня есть доступ к ... Я просматривал различные примеры онлайн и видео, но я не могу показаться чтобы понять, как это работает. Мой фид XML возвращает следующую структуру узла:Loop через узлы xml с simplexml

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

Я имел успех с протаскивания одного элемента с этим кодом:

<?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; 
?> 

Но превращение его в Еогеасп, кажется, где я изо всех сил , Вот код, который я пробовал до сих пор, не повезло;

<?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; 
?> 

Спасибо всем :)

ответ

0

Ok выглядит как я нашел решение. Heres код, который работал для меня плюс она содержит немного кода, который вытаскивает дублированный (он показывал каждому пункту 4 раза!) ...

<?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

Взятые из documentation

Примечание:

Свойства ($ movies-> фильм в предыдущем примере) не являются массивы. Они являются итерируемыми и доступными объектами.

При этом иметь в виду, вы можете просто запустить через узлы с foreach

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

Спасибо KhorneHoly - Так что я положил его вместе и придумали с этим, но он, похоже, не работает ... OutputVacancyAsXml-> Вакансия как $ vacanacy) { echo (string) $ vacanacy-> Job; // Вычеркнуть название вакансии } ?> –

+0

Не уверен, что я должен добавить, что KhorneHoly - нет области кода по внешнему виду ... –