Ver Mensaje Individual
  #2 (permalink)  
Antiguo 06/09/2010, 10:17
Avatar de abimaelrc
abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Simplexml y xpath

El usar $xml->xpath("//madre//hijo"); si no existe no te devuelve un error. Por ejemplo
Código PHP:
Ver original
  1. <?php
  2. $string = <<<XML
  3. <foo>
  4.     <bar>
  5.         <baz>candy</baz>
  6.     </bar>
  7.     <bar>
  8.         <vegetable>fruits</vegetable>
  9.     </bar>
  10. </foo>
  11. XML;
  12.  
  13. $xml = new SimpleXMLElement($string);
  14.  
  15. $results = $xml->xpath('//fruits');
  16.  
  17. foreach($results as $result){
  18.     echo $result;
  19. }
Se supone que busca aquellos elementos que se llamen fruits y como no existen no despliega información. Debe ser que tienes declarado algo que usa el valor que te devuelve $xml y lo estás usando como que forzosamente debe siempre haber algún valor. Debes crear algúna condición para verificar si existe o no algún valor. Por ejemplo
Código PHP:
Ver original
  1. <?php
  2. $string = <<<XML
  3. <foo>
  4.     <bar>
  5.         <baz>candy</baz>
  6.     </bar>
  7.     <bar>
  8.         <vegetable>fruits</vegetable>
  9.     </bar>
  10. </foo>
  11. XML;
  12.  
  13. $xml = new SimpleXMLElement($string);
  14.  
  15. // Verifica los elementos que sean fruits
  16. $results = $xml->xpath('//fruits');
  17.  
  18. if(count($results) > 0){
  19.     foreach($results as $result){
  20.         echo $result;
  21.     }
  22. }
  23.  
  24.  
  25. // Verifica los elementos que sean baz
  26. $results = $xml->xpath('//baz');
  27.  
  28. if(count($results) > 0){
  29.     foreach($results as $result){
  30.         echo $result;
  31.     }
  32. }
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos