[symfony2] xml json et php array
Bonjour � tous,
j'ai un probleme dans l'affichage sous forme xml et json. voici un exemple d'un affichage xml:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
<response>
<application>
<application id="1">
<name>
<![CDATA[ ap1 ]]>
</name>
<icon>
<![CDATA[
C:/wamp/www/betaappli/web/bundles/betappliapplication/uploads/applicationsIcons/1.jpg
]]>
</icon>
</application>
<build id="1">
<name>
<![CDATA[ 1.0.1 ]]>
</name>
<upload>
<![CDATA[
C:/wamp/www/betaappli/web/bundles/betappliapplication/uploads/applications/android/1/1.apk
]]>
</upload>
<uploaddate>
<year>2012</year>
<month>4</month>
<day>30</day>
<hour>10</hour>
<minute>16</minute>
<second>9</second>
</uploaddate>
</build>
</application>
<application>
<application id="1">
<name>
<![CDATA[ ap1 ]]>
</name>
<icon>
<![CDATA[
C:/wamp/www/betaappli/web/bundles/betappliapplication/uploads/applicationsIcons/1.jpg
]]>
</icon>
</application>
<build id="2">
<name>
<![CDATA[ 6.3.9 ]]>
</name>
<upload>
<![CDATA[
C:/wamp/www/betaappli/web/bundles/betappliapplication/uploads/applications/android/1/2.apk
]]>
</upload>
<uploaddate>
<year>2012</year>
<month>4</month>
<day>30</day>
<hour>10</hour>
<minute>16</minute>
<second>37</second>
</uploaddate>
</build>
</application>
<application>
<application id="3">
<name>
<![CDATA[ ap3 ]]>
</name>
<icon>
<![CDATA[
C:/wamp/www/betaappli/web/bundles/betappliapplication/uploads/applicationsIcons/3.jpg
]]>
</icon>
</application>
<build id="4">
<name>
<![CDATA[ 9.8.4 ]]>
</name>
<upload>
<![CDATA[
C:/wamp/www/betaappli/web/bundles/betappliapplication/uploads/applications/android/3/4.apk
]]>
</upload>
<uploaddate>
<year>2012</year>
<month>4</month>
<day>30</day>
<hour>10</hour>
<minute>19</minute>
<second>10</second>
</uploaddate>
</build>
</application>
</response> |
mon souci est d'avoir un affichage telque:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
<applications>
<application id="1">
<build id="1">
</build>
<build id="2">
</build>
</application>
<application id="2">
<build id="1">
......
</build>
<build id="2">
....
</build>
</application>
</applications> |
cad associ� a chaque balise application id=" " par exemples application id="1" ses builds et non avoir des duplications de cette balise ayant chaque fois un build seulement.
mon code et le suivant:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
<?php
if($user)
{ foreach($user->getTeams() as $teams)
{
foreach($teams->getBuilds() as $builds)
{
$applications = $em->getRepository('BetappliApplicationBundle:Application')->findByPlatform($platform);
if(!$applications) {
$xml = $serializer->serialize(array('error' => $error), 'xml');
return new Response($xml);
}
foreach ($applications as $application)
{
if($application->getId()==$builds->getApplication()->getId())
{ $val=1;
foreach ($application->getBuilds() as $build)
{
if($build->getId()==$builds->getId())
{
$Date=$build->getUploadDate();
$dt= new DateTimeToArrayTransformer();
$d=$dt->transform($Date);
$id=$build->getId();
$dir =$build->getUploadRootDir();
if($platform=='Android'){
$fileName=$builds->id.'.apk';
}
else
{
$fileName=$builds->id.'.ipa';
}
$xml_app[$i]=array('application'=>array('@id'=>$application->getId(),'name'=>$application->getapplicationName(),
'icon'=>$application->getAbsolutePath_icon()));
$xml_build[$i]=array('build'=>(array('@id'=>$build->getId(),'name'=>$build->getbuildName(),'upload' => $build->getUploadRootDir_build($fileName),
'uploaddate' => $d)));
$xml[$i]=array_merge($xml_app[$i],$xml_build[$i]);
$i++;
}//fin if($build->getId()==$build->getId())
}//fin foreach ($application->getBuilds() as $build)
}// fin if($application->getId()==$builds->getApplication()->getId())
}// fin foreach ($applications as $application)
// }//fin foreach($builds->getApplication() as $applications)
}//fin foreach($builds as $builds)
}//fin foreach($teams as $teams)
if($val==1)
{
$xml = array_map('unserialize', array_unique(array_map('serialize', $xml)));
$xml = $serializer->serialize(array('application'=>$xml), 'xml');
//$xml = $serializer->serialize($xml, 'xml');
return new Response($xml);
}
else
{
return new Response();
}
}//fin if($user)
?> |
Est ce que vous avez une id�e? Merci