2012-03-19 6 views
0

Je suis bloqué en essayant d'accéder aux éléments de mon SimpleXmlObject. Je dois accéder juste au 'applicationID' mais j'ai du mal à y arriver. Je l'ai créé avec succès un SimpleXmlObject à partir du code ci-dessous: (je l'ai tronqué 9 des documents 10 réponses)PHP SimpleXML avec responseHeader inclus

<response> 
    <lst name='responseHeader'> 
     <int name='status'>0</int> 
     <lst name='params'> 
     <str name='q'>applicationDateAdded:NOW()-1</str> 
     <str name='wt'>xml</str> 
     </lst> 
    </lst> 
    <result name='response' numFound='10' start='0'> 
     <doc> 
     <date name='applicationDateAdd'>2012-02-28T16:00:00Z</date> 
     <arr name='applicationDescript'> 
      <str>description</str> 
      <str>desc</str> 
     </arr> 
     <bool name='applicationFeatured'>false</bool> 
     <str name='applicationId'>APPID-00000000017</str> 
     <str name='id'>APPID-00000000017</str> 
     <str name='type'>APPLICATION</str> 
     </doc> 
     <doc>...</doc> 
     <doc>...</doc> 
     <doc>...</doc> 
     <doc>...</doc> 
     <doc>...</doc> 
     <doc>...</doc> 
     <doc>...</doc> 
     <doc>...</doc> 
     <doc>...</doc> 
    </result> 
</response> 

Répondre

0

Cela fera écho à la valeur de chaque applicationId (en supposant que la chaîne XML est en $xml):

$xmlObj = simplexml_load_string($xml); 

foreach($xmlObj->result->doc as $doc) 
{ 
    foreach($doc->str as $str) 
    { 
     if($str->attributes()->name == 'applicationId') 
     { 
      echo 'applicationId: ' . (string)$str . '<br />'; 
      break 1; 
     } 
    } 
} 
1

Nous vous remercions de votre aide! Je l'ai résolu il y a environ un mois (et j'ai oublié que j'avais posté ici jusqu'à maintenant). Bien que ma solution soit un peu juvénile et personnalisée pour mes besoins, je suis heureux d'aider toute personne ayant des problèmes similaires. Les boucles suivantes à travers et me donne la valeur de chaque attribut:

// $results is the SimpleXmlElement object at the beginning 
$numFound = $results -> attributes() -> numFound; 
    echo "Number of Results found: "; 
    echo $numFound; 
    echo '<br><br>'; 

    if ($numFound > 0) { 
    foreach($results -> children() as $content) { 
     echo '<br>------------------------<br>'; 
     foreach ($content -> children() as $sub) { 
     $attName = $sub -> attributes(); 
     echo $attName[0]." = "; 
     $count = 0; 
     foreach($sub -> children() as $val) { 
     $val = $sub -> str[$count++]; 
     echo $val; 
      echo '<br>'; 
     } 
     echo '<br>'; 
     } 
    } 
    }