2017-02-22 184 views
0

我试图在我的网站上创建一个工作表,从XML提要中获取信息我有权访问...我已经看过各种示例在线和视频,但我无法看到了解它是如何工作的。我的XML饲料返回以下节点结构:使用simplexml循环通过xml节点

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

但将其转换成的foreach似乎是在那里我挣扎。下面我试过的代码没有运气;

<?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看起来很简单的运行就像我找到了解决办法。继承人为我工作的代码,再加上它包含的代码一点点,拉出来重复(它显示每个项目的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

注摘自:

属性($影片 - >电影在前面的例子)不是数组。他们 是可迭代和可访问的对象。

随着该记住的,你可以在节点与foreach

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

谢谢KhorneHoly - 所以我把它放在一起,并拿出与此,但它似乎并没有工作... <?php $ html =“”; $ url =“https://www.octopus-hr.co.uk/recruit/OutputVacancyAsXml.aspx?CompanyID=400-73A3BCA1-D952-4BA6-AADB-D8BF3B495DF6”; $ xml = simplexml_load_file($ url); foreach($ xml-> OutputVacancyAsXml->空缺为$ vacanacy) { echo(string)$ vacanacy-> Job; //回声输出职位 } ?> –

+0

不知道我应该补充说KhorneHoly - 没有代码区域的外观... –