Parsing the use cases XML

I discussed the other day about writing the use cases. I also mentioned that I was going to write them all in XML so they could be easily parsed later on.

As you might have noticed by looking at only 3 use cases, it gets pretty long and hard to read in raw format, so first code had to be a parser for that.

Solution: Clean XML To Array by Ivan Enderlin, found on PHPClasses.

All you need is to download the lib.xml.php and create the a new file with the little code shown below.

<?php
include('lib.xml.php');
$xml = new Xml;
$out = $xml->parse('file.xml', 'FILE');
echo '<pre>'.printr($out).’</pre>’;
?>
All that was left to do was to parse it in an easy to read format. This will do for now as I don’t want to spend too much time on it.
<?php
include('lib.xml.php');
$xml = new Xml;
$out = $xml->parse('usercase.xml', 'FILE');
//echo '<pre>'.printr($out).’</pre>’;exit();

foreach ($out as $usecases) { for ($i=0; $i<count($usecases); $i++) { $usecase = $usecases[$i];

    echo '&lt;div class="usecase"&gt;';
    echo '&lt;h3&gt;'.$usecase[name].': '.$usecase[description].'&lt;/h3&gt;';
    echo '&lt;p class="overview"&gt;';
    echo '&lt;strong&gt;Sitting:&lt;/strong&gt; '.$usecase[sitting].'&lt;br /&gt;';
    echo '&lt;strong&gt;Primary Actor:&lt;/strong&gt; '.$usecase[primaryactor].'&lt;br /&gt;';
    echo '&lt;strong&gt;Scope:&lt;/strong&gt; '.$usecase[scope].'&lt;br /&gt;';
    echo '&lt;strong&gt;Level:&lt;/strong&gt; '.$usecase[level].'&lt;br /&gt;';
    echo '&lt;strong&gt;Minimal Guarantee:&lt;/strong&gt; '.$usecase[minimalguarantee].'&lt;br /&gt;';
    echo '&lt;strong&gt;Success Guarantee:&lt;/strong&gt; '.$usecase[successguarantee].'&lt;br /&gt;';
    echo '&lt;/p&gt;';

    echo '&lt;h4&gt;Stakeholders&lt;/h4&gt;&lt;p class="stakeholders"&gt;';
    foreach($usecase[stakeholders][stakeholder] as $id =&gt; $stakeHolder){
        echo '&lt;strong&gt;'.$stakeHolder.':&lt;/strong&gt; '.$usecase[stakeholders][interest][$id].'&lt;br /&gt;';
    }
    echo '&lt;/p&gt;';

    echo '&lt;h4&gt;Scenario&lt;/h4&gt;&lt;p class="scenario"&gt;';
    if(is_array($usecase[scenario][step])){
        foreach($usecase[scenario][step] as $id =&gt; $step) echo $id.'. '.$step.'&lt;br /&gt;';
    } else {
        echo $usecase[scenario][step];
    }
    echo '&lt;/p&gt;';

    echo '&lt;h4&gt;Extensions&lt;/h4&gt;&lt;p class="extensions"&gt;';
    foreach($usecase[extensions][extension] as $id =&gt; $extension){
        echo '&lt;strong&gt;Extends:&lt;/strong&gt; '.$extension['extends'].' ('.$usecase[scenario][step][$extension['extends']].')&lt;br /&gt;';
        echo $extension['xcase'].'&lt;br /&gt;';
        echo '&lt;strong&gt;Steps:&lt;/strong&gt;&lt;ol&gt;';
        if(is_array($extension['step'])){
            foreach($extension['step'] as $id =&gt; $step) echo $id.'. '.$step.'&lt;br /&gt;';
        } else {
            echo $extension['step'];
        }
        echo '&lt;/ol&gt;';
    }
    echo '&lt;/p&gt;';
}

}

?>

One Response to “Parsing the use cases XML”

  1. Ivan Enderlin Says:

    Glad to have helped you :) Thanks for the trackback ;-)

Leave a Reply