Skip to content

Instantly share code, notes, and snippets.

@kmgdevelopment
Created August 22, 2012 17:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kmgdevelopment/3427969 to your computer and use it in GitHub Desktop.
Save kmgdevelopment/3427969 to your computer and use it in GitHub Desktop.
Parse XML by Category
<?php
$jobs = simplexml_load_file('jobfeed.xml');
function output_list($jobs = array())
{
$data = array();
foreach($jobs->xpath('/jobs/job') as $job_details)
{
$category = $job_details->department;
$title = $job_details->title;
$url = $job_details->url;
if(!isset($data[$category]))
{
$data[$category] = array();
}
$data[$category][] = '<li>Category: '.$category.'<br>Title: '.$title.'<br>URL: '.$url.'</li>';
}
foreach($data as $category => $items)
{
$data[$category] = '<li><ul>'.implode('', $items).'</ul></li>';
}
return '<ul>'.implode('', $data).'</ul>';
}
echo output_list($jobs);
?>
@kmgdevelopment
Copy link
Author

var_dump($data); gives me this: array(0) { }

var_dump($category); gives me this: object(SimpleXMLElement)#47 (0) { }

Both would imply that there is no data being returned for the $category variable, which confuses the hell out of me because if I do this:

<ul>
<?php
    $jobs = simplexml_load_file('jobfeed.xml');

    foreach ($jobs->xpath('/jobs/job') as $jobDetails) {
        $category = $jobDetails->department;
        $title = $jobDetails->title;
        $url = $jobDetails->url;

        echo '<li>Category: ',$category,'<br>Title: ',$title,'<br>URL: ',$url,'</li>';
    }
?>
</ul>

The categories are output perfectly fine.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment